錄製生成用例
為了簡化測試用例的編寫工作,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