一、概述
HttpRunner是一款面向 HTTP(S) 協議的通用測試框架,只需編寫維護一份 YAML/JSON 腳本,即可實現自動化測試、性能測試、線上監控、持續集成等多種測試需求。
二、系統流程
三、文件組織
1、項目文件目錄結構
說明:(1)api 文件夾:存儲接口定義描述
(2)testcases 文件夾:存儲測試用例,文件夾也可以使用其它名稱
(3)testsuites 文件夾:測試測試場景,文件夾也可以使用其它名稱
(4)reports 文件夾:存儲 HTML 測試報告
(5).env文件:存儲項目環境變量,通常用於存儲項目敏感信息
(6)debugtalk.py:存儲項目中邏輯運算輔助函數
·該文件存在時,將作為項目根目錄定位標記,其所在目錄即被視為項目工程根目錄
·該文件不存在時,運行測試的所在路徑(CWD)將被視為項目工程根目錄
·測試例文件中的相對路徑(例如.csv)均需基於項目工程根目錄
·運行測試后,測試報告文件夾(reports)會生成在項目工程根目錄
四、用例編寫
1、用例編寫
(1)api文件夾中編輯接口描述文件,如create_user.yml
(2)testcases文件夾中編輯測試用例文件,如create_and_check.yml

2、編寫用例注意事項
(1)extract響應結果的字段有 : status_code, cookies, elapsed, headers, content, text, json, encoding, ok, reason, url。如果響應結果中有多層嵌套,可通過content.xxx.0.id格式獲取id,其中content是指響應內容,xxx是響應內容中的某個字段,0表示獲取xxx數組中第一個內容。
(2)所有json/yaml和.env文件中格式錯誤都會導致執行失敗。
.env編輯時需注意:從第一行開始編輯,結尾不要有空行,采用key=value,value不需用“”括起來,否則會變成value的一部分
(3)支持的檢驗器有eq(=)、lt(<)、le(<=)、gt(>)、ge(>=)、ne(!=)、str_eq、len_eq、len_gt、len_ge、len_lt、len_le、contains、contained_by、type_match、regex_match、startswith、endswith。
五、變量或函數引用
1、變量引用
接口用例中,取值時可以通過自定義,也可以引用其他已定義好的變量或參數,格式為$var
2、函數引用
接口用例中,取值時除了自定義、引用其他變量外,還可以引用debugtalk.py定義的函數來獲取到函數返回值,格式為${get_value()}
六 環境變量引用
1、編輯.env文件
注意:env一般放置在項目根目錄,若放置在其他目錄或者命名不是.env時,可采用 --dot-env-path 參數指定文件路徑,如hrun .../x.yml --dot-env-path .../xxx.env2、引用環境變量
(1)通過${ENV()}獲取
(2)在debugtalk.py中通過os.environ獲取

七、參數化數據驅動
Httprunner2.0中支持testsuits中進行參數化和數據驅動,假如測試用例中定義了多個參數,那么測試用例在運行時會對參數進行笛卡爾積組合,覆蓋所有參數組合情況。
1、參數情況分2種
(1)獨立參數
(2)具有關聯性的多個參數
2、指定數據源方式分3種
(1)在 YAML/JSON 中直接指定參數列表

(2)通過內置的P函數引用 CSV 文件
(3)調用 debugtalk.py 中自定義的函數生成參數列表
附:
1、以上內容參考或引用以下網址
https://testerhome.com/topics/18691
https://github.com/HttpRunner/HttpRunner
https://cn.httprunner.org/
https://debugtalk.com/post/HttpRunner-testcase-layer/