之前使用HRUN1.0已經快一年來, 一直在關注開源社區的進展, 減年年初2.0就已經上線來, 由於擔心穩定性差,文檔又沒有健全,遲遲沒有升級;
最近看開發文檔已經全部更新到2.0 決定將之前的項目進行優化; 首先學習下新的框架有哪些亮眼的地方;
項目中文使用文檔: https://cn.httprunner.org/examples/testerhome-login/
1、環境搭建,具體可以參考文檔,非常詳細, 由於之前用過 我就直接升級就行了;
pip3 install -U HttpRunner
2、搭建測試腳手架(不用自己在像之前一樣自己構建測試框架; 可以使用現成的框架結構,以下作者對測試用例的理解,是不是很有道理)
- 測試用例應該是完整且獨立的,每條測試用例應該是都可以獨立運行的;在 HttpRunner 中,每個
YAML/JSON
文件對應一條測試用例。 - 測試用例包含
測試腳本
和測試數據
兩部分:測試用例 = 測試腳本 + 測試數據
測試腳本
重點是描述測試的業務功能邏輯
,包括預置條件、測試步驟、預期結果等,並且可以結合輔助函數(debugtalk.py)實現復雜的運算邏輯;可以將測試腳本
理解為編程語言中的類(class)
;測試數據
重點是對應測試的業務數據邏輯
,可以理解為類的實例化數據;測試數據
和測試腳本
分離后,就可以比較方便地實現數據驅動測試,通過對測試腳本傳入一組數據,實現同一業務功能在不同數據邏輯下的測試驗證。
hrun --startproject demo #會在當前路徑下生成測試腳手架哦,IDE打開后是這樣的
YAML/JSON
(必須):測試用例文件,存儲接口測試相關信息debugtalk.py
(可選):存儲項目中邏輯運算輔助函數- 該文件存在時,將作為項目根目錄定位標記,其所在目錄即被視為項目工程根目錄
- 該文件不存在時,運行測試的所在路徑(
CWD
)將被視為項目工程根目錄 - 測試用例文件中的相對路徑(例如
.csv
)均需基於項目工程根目錄 - 運行測試后,測試報告文件夾(
reports
)會生成在項目工程根目錄
.env
(可選):存儲項目環境變量,通常用於存儲項目敏感信息.csv
(可選):項目數據文件,用於進行數據驅動reports
:默認生成測試報告的存儲文件夾
3、批量生成自動化測試用例 har2case
和1.0使用基本沒差, 利用抓包工具篩選出目標接口,批量導出 har格式, 然后轉換成json 或 yml格式 稍加改造就是現成的測試用例
也支持使用Yapi 和 Swagger批量導出生成測試用例, 文檔上是這么寫的 我還沒機會去試.
har2case x.har -2y #不寫-2y 默認會生成json格式
4、用例優化之提取公共變量config
config層是用例中存放公共變量的地方,解決參數復用的問題;
存儲公共變量使用變量名 variables, 可以放在用例集上 也可以放在某個具體的測試用例中;
后面接口調用直接 ${ } 會優先查找用例層面的variable 然后在找用例集層面的variable.
5、用例優化之 參數透傳 extract
與之前一樣 支持參數透傳 即一條用例可能會調用多個接口, 接口調用前后存在依賴 后面的接口請求參數 需要前面接口的返回值(比如登陸的token)
接口一可以使用extract關鍵字來匹配返回值 路徑. 或正則表達式
接口二想引用接口一的返回值 ${id}
6、用例優化之 測試數據參數化 parameters & debugtalk
獨立參數參數化
關聯參數參數化
引入csv文件進行參數化取值
引入熱加載,用例參數化過程中實時去執行函數獲取參數值
7、用例優化之 hook機制
支持用例集的hook和測試用例層面的hook
8、用例優化之 測試用例分層機制 -api -testcase
測試用例分層機制的核心是將接口定義、測試步驟、測試用例、測試場景進行分離,單獨進行描述和維護,從而盡可能地減少自動化測試用例的維護成本。
api文件夾的作用:把重復的請求(請求token)抽離出去,引用時可以修改參數,用variable覆蓋api參數,
希望用例可以回歸本質,每一個用例都可以獨立運行,做到數據解藕
除了把單個請求抽離出來 也可以把單個測試步驟抽離出來 被其它用例引用來解決數據節藕的問題
9、環境變量設置 .env
在自動化測試中,有時需要借助環境變量實現某些特定的目的,常見的場景包括:
- 切換測試環境
- 切換測試配置
- 存儲敏感數據(從信息安全的角度出發)
10、用例執行
hrun yourcasepath.yml --log-level debug
#默認情況下,HttpRunner 運行時的日志級別為INFO
,只會包含最基本的信息,包括用例名稱、請求的URL和Method、響應結果的狀態碼、耗時和內容大小。
11、采用locusts執行用例的壓力測試
$ locusts -f yourcasepath.yml