前言
HttpRunner 是一款面向 HTTP(S) 協議的通用測試框架,只需編寫維護一份 YAML/JSON 腳本,即可實現自動化測試。
具有以下優點:
- 繼承 Requests 的全部特性,輕松實現 HTTP(S) 的各種測試需求
- 采用 YAML/JSON 的形式描述測試場景,保障測試用例描述的統一性和可維護性
- 借助輔助函數(debugtalk.py),在測試腳本中輕松實現復雜的動態計算邏輯
- 支持完善的測試用例分層機制,充分實現測試用例的復用
- 測試前后支持完善的 hook 機制
- 響應結果支持豐富的校驗機制
- 基於 HAR 實現接口錄制和用例生成功能(har2case)
- 結合 Locust 框架,無需額外的工作即可實現分布式性能測試
- 執行方式采用 CLI 調用,可與 Jenkins 等持續集成工具完美結合
- 測試結果統計報告簡潔清晰,附帶詳盡統計信息和日志記錄
- 極強的可擴展性,輕松實現二次開發和 Web 平台化
環境准備
httprunner目前有2個版本,1.x和2x版本,本篇以1.5.8版本為學習的基礎版本
使用pip安裝
pip install httprunner==1.5.8
安裝完成后檢查版本號
hrun -V
使用案例
登錄之后獲取token這是最常見的場景了,接下來以獨立接口為案例,登錄接口這個是訪問我本地的接口,你們是沒法訪問的,
具體的登錄接口開發需要用到django,查看這篇https://www.cnblogs.com/yoyoketang/p/11517213.html
登錄接口相關文檔信息如下:
- 訪問地址:
http://127.0.0.1:8000/api/v1/login/
- 請求類型:POST
- 請求頭部:application/json
- 請求參數:{"username":"test", "password":"123456"}
使用httpapi命令行工具,訪問后測試接口報文信息如下
C:\Users\dell>http http://127.0.0.1:8000/api/v1/login/ username=test password=123456 -v
POST /api/v1/login/ HTTP/1.1
Accept: application/json, */*
Accept-Encoding: gzip, deflate
Connection: keep-alive
Content-Length: 42
Content-Type: application/json
Host: 127.0.0.1:8000
User-Agent: HTTPie/1.0.3
{
"password": "123456",
"username": "test"
}
HTTP/1.1 200 OK
Allow: POST, OPTIONS
Content-Length: 109
Content-Type: application/json
Date: Thu, 19 Sep 2019 15:15:18 GMT
Server: WSGIServer/0.2 CPython/3.6.0
Vary: Accept, Cookie
X-Frame-Options: SAMEORIGIN
{
"code": 0,
"msg": "login success!",
"token": "000038efc7edc7438d781b0775eeaa009cb64865",
"username": "test"
}
編寫yml格式腳本
接下來轉換成httprunner的YAML格式腳本用例,保存為test_login.yml
# 上海悠悠,QQ交流群:750815713
- config:
name: logincase
variables: {}
- test:
name: login case1
request:
url: http://127.0.0.1:8000/api/v1/login/
method: POST
headers:
Content-Type: application/json
User-Agent: python-requests/2.18.4
json:
username: test
password: 123456
validate:
- eq: [status_code, 200]
- eq: [headers.Content-Type, application/json]
- eq: [content.msg, login success!]
- eq: [content.code, 0]
json格式
如果你不喜歡yaml格式,用json也是可以的。新建一個test_login2.json文件,內容如下
# 上海悠悠,QQ交流群:750815713
[{
"config": {
"name": "logincase",
"variables": {}
}
},
{
"test": {
"name": "login case1",
"request": {
"url": "http://127.0.0.1:8000/api/v1/login/",
"method": "POST",
"headers": {
"Content-Type": "application/json",
"User-Agent": "python-requests/2.18.4"
},
"json": {
"username": "test",
"password": "123456"
}
},
"validate": [{
"eq": ["status_code", 200]
},
{
"eq": ["headers.Content-Type", "application/json"]
},
{
"eq": ["content.msg", "login success!"]
}, {
"eq": ["content.code", 0]
}
]
}
}
]
運行用例
運行用例很簡單,直接在cmd里面,cd到test_login.yml目錄,運行
hrun test_login.yml
或者執行json文件
hrun test_login2.json
執行結果如下
D:\soft\untitled>hrun test_login.yaml
login case1
INFO POST http://127.0.0.1:8000/api/v1/login/
INFO status_code: 200, response_time(ms): 414.33 ms, response_length: 109 bytes
INFO start to validate.
.
----------------------------------------------------------------------
Ran 1 test in 0.419s
OK
INFO Start to render Html report ...
INFO Generated Html report: D:\soft\untitled\reports\1568906898.html
D:\soft\untitled>
查看測試報告
運行完成后會在當前目錄生成一個report文件夾,里面會有一個html格式的報告文件,按時間戳生成的
點開log可以查看詳情
請求(request)
返回 (response)
斷言 (Validators)