一、用來做什么
HttpRunner 是一款面向 HTTP(S) 協議的通用測試框架,只需編寫維護一份 YAML/JSON
腳本,即可實現自動化測試、性能測試、線上監控、持續集成等多種測試需求。
官方中文文檔地址:https://cn.httprunner.org/
二、開始使用
1、安裝
pip install httprunner 安裝
pip install pipenv 安裝管理依賴包
2、項目文件結構
測試用例分層結構
cmd到創建文件下目錄,執行
hrun --startproject demo 創建一個基本的測試用例分層結構
api文件:存放接口相關信息
testcase:用例存放
testsuites:用例集
reports:測試報告存放地方
debugtalk.py 基礎數據定義,這邊里可以定義數據,或者寫方法來獲取,在整個文件中都可以調用里面定義的數據
.env 也是定義數據的一個文件
gitignore git軟件要忽略的文件列表
測試用不分層結構,根據項目需要創建文件所有文件都在同一個目錄,或者按自己的愛好創建,不推薦這種方式。
3、實踐使用
假設有一個登錄接口和查詢接口,要預先登錄后獲取到token,然后才能進行查詢,找到類似這兩個接口的接口文檔,或者抓包對應事件看看是否看接口相關信息
api格式:
name: demo api
base_url:base_url
variables:
var1: value1
var2: value2
request:
url: /api/path/$var1
method: POST
headers:
Content-Type: "application/json"
json:
key: $var2
validate:
- eq: ["status_code", 200]
name 和 request 部分是必須的,request 中的描述形式與 requests.request 完全相同。存在變量引用的情況,可在 variables 中對參數進行定義,
默認情況下,har2case 生成用例時,若 HTTP 請求的響應內容為 JSON 格式,則會將第一層級中的所有key-value
轉換為 validator。
testcase測試用例:
- config:
name: testcase description
request: base_url: ${gain_base_url()}
variables: {} - test: name: /api/get-token request: headers: Content-Type: application/json User-Agent: python-requests/2.18.4 app_version: 2.8.6 device_sn: FwgRiO7CNA50DSU os_platform: ios json: sign: 9c0c7e51c91ae963c833a4ccbab8d683c4a90c98 method: POST url: http://127.0.0.1:5000/api/get-token validate: - eq: [status_code, 200] - eq: [headers.Content-Type, application/json] - eq: [content.success, true] - eq: [content.token, baNLX1zhFYP11Seb]
config是接口配置部分,test是用例部分,validate是斷言部分
加密:
hook 函數的定義放置在項目的 debugtalk.py
中,在 YAML/JSON 中調用 hook 函數仍然是采用 ${func($a, $b)}
的形式。
3、運行
cd 到對應目錄下,hrun 對應case文件就行了
# 調試運行 hrun
$ pipenv run python main-debug.py hrun -h
# 調試運行 locusts $ pipenv run python main-debug.py locusts -h
httprunner、hrun、ate 三個命令完全等價