2. HttpRunnner錄製生成用例

辣條評測師發表於2020-10-29

錄製生成用例

為了簡化測試用例的編寫工作,HttpRunner 實現了測試用例生成的功能,對應的轉換工具為一個獨立的專案:har2case。

簡單來說,就是當前主流的抓包工具和瀏覽器都支援將抓取得到的資料包匯出為標準通用的 HAR 格式(HTTP Archive),然後 HttpRunner 實現了將 HAR 格式的資料包轉換為YAML/JSON格式的測試用例檔案的功能。

環境準備

pip 命令安裝

> pip install har2case

離線安裝

# 下載地址:https://pypi.org/project/har2case
# 解壓資料夾, cd到setup.py所在的目錄,執行以下命令安裝
> python setup.py install

檢視版本號

> har2case -V
0.3.1

使用FastApi建立一個簡單的介面

from fastapi import FastAPI

app = FastAPI()


@app.get("/index")
async def index():
    return {
        "msg": "success",
        "msg_type": 200
    }
    

if __name__ == '__main__':
    import uvicorn
    uvicorn.run(app, host="127.0.0.1", port=8000)

自動生成測試用例

1. 使用Charles工具捕獲HTTP請求和響應

捕獲

2. 將會話匯出到HAR檔案

匯出

3. 轉換生成測試用例

使用 har2case 轉換指令碼時預設轉換為 JSON 格式。

> har2case index.har
INFO:root:Start to generate testcase.
INFO:root:dump testcase to JSON format.
INFO:root:Generate JSON testcase successfully: index.json

加上 -2y/--to-yml 引數後轉換為 YAML 格式。

> har2case index.har -2y
INFO:root:Start to generate testcase.
INFO:root:dump testcase to YAML format.
INFO:root:Generate YAML testcase successfully: index.yml

兩種格式完全等價,YAML 格式更簡潔,JSON 格式支援的工具更豐富,大家可根據個人喜好進行選擇。

index.json檔案:

{
    "config": {
        "name": "testcase description",
        "variables": {}
    },
    "teststeps": [
        {
            "name": "/index",
            "request": {
                "url": "http://localhost.charlesproxy.com:8000/index",
                "method": "GET",
                "headers": {
                    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.83 Safari/537.36"
                }
            },
            "validate": [
                {
                    "eq": [
                        "status_code",
                        200
                    ]
                },
                {
                    "eq": [
                        "content.msg",
                        "success"
                    ]
                },
                {
                    "eq": [
                        "content.msg_type",
                        200
                    ]
                }
            ]
        }
    ]
}

index.yml檔案

config:
    name: testcase description
    variables: {}
teststeps:
-   name: /index
    request:
        headers:
            User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36
                (KHTML, like Gecko) Chrome/85.0.4183.83 Safari/537.36
        method: GET
        url: http://localhost.charlesproxy.com:8000/index
    validate:
    -   eq:
        - status_code
        - 200
    -   eq:
        - content.msg
        - success
    -   eq:
        - content.msg_type
        - 200

相關文章