HttpRunner 是一款面向 HTTP(S) 協議的通用測試框架,只需編寫維護一份 YAML/JSON
腳本,即可實現自動化測試、性能測試、線上監控、持續集成等多種測試需求。
中文使用文檔地址:https://testerhome.com/opensource_projects/httprunner https://cn.httprunner.org/
核心特性
- 繼承 Requests 的全部特性,輕松實現 HTTP(S) 的各種測試需求
- 采用
YAML/JSON
的形式描述測試場景,保障測試用例描述的統一性和可維護性 - 借助輔助函數(debugtalk.py),在測試腳本中輕松實現復雜的動態計算邏輯
- 支持完善的測試用例分層機制,充分實現測試用例的復用
- 測試前后支持完善的 hook 機制
- 響應結果支持豐富的校驗機制
- 基於 HAR 實現接口錄制和用例生成功能(har2case)
- 結合 Locust 框架,無需額外的工作即可實現分布式性能測試
- 執行方式采用 CLI 調用,可與 Jenkins 等持續集成工具完美結合
- 測試結果統計報告簡潔清晰,附帶詳盡統計信息和日志記錄
- 極強的可擴展性,輕松實現二次開發和 Web 平台化
1.首先是環境搭建:
采用pip安裝或者直接從github上下載安裝 pip install httprunner
安裝完成后cmd命令檢查 hrun -V
2.我們用相關命令直接生成對應的項目文件夾。
hrun --startproject 文件夾 如HttpRunnerDemo
執行命令后可以看到對應的目錄生成了
從目錄可以看出httprunner采用分層的設計思想,這一部分下一節再研究。
3.我們在testcases中建立一個demo的yml文件,把接口測試資料按一定的規則寫入,如下實例,yml需遵循嚴格的縮進。
- config: request: headers: $content base_url: $host url: /commons_service/weather/getWeatherListByLocation?appType=6&requestId=777777 method: POST - test: name: test weather ID1 request: json: body: {"lat":"", "lng":"", "city":"武漢市"} validate: - eq: [status_code,200] - eq: [json.msg,"成功"] - test: name: test weather ID2 request: json: body: { "lat":"123","lng":"125","city":""} validate: - eq: [status_code,200] - eq: [json.msg,"成功"]
config是接口配置部分,test是用例部分,validate是斷言部分,用例非常格式化所以清晰。
上面的實例,我們在config中引入了變量 $host $content等,是因為很多接口的公共部分,我們可以抽離出來放入debugtalk.py
4.運行用例,用hrun命令,如下:hrun \tests\testcases\test_weather.yml
運行能看到運行結果以及生成測試報告,我們打開報告查看:
測試信息在報告中都有記錄,我們可以打開log查看詳情,我們可以清晰的看到接口返回和我們的斷言結果。
當然httprunner還支持接口錄制(用抓包工具生成.har文件)后轉為可執行的用例(用har2case),最重要的是,測試用例和代碼的分離。這樣使得稍有編碼功底的人迅速上手。
下一篇將會學習har2case和測試分層的知識。