框架介紹
1、HttpRunner
是一款面向 HTTP(S) 協議的通用測驗框架,只需撰寫維護一份YAML/JSON腳本,即可實作自動化測驗、性能測驗、線上監控、持續集成等多種測驗需求,
2、Locust
Locust是一款易于使用的分布式用戶負載測驗工具,它用于對網站(或其他系統)進行負載測驗,并確定系統可以處理多少并發用戶,HttpRunner 通過復用Locust ,可以在無需對 YAML/JSON 進行任何修改的情況下,直接運行性能測驗,
3、 httprunner使用手冊
附httprunner中文使用檔案地址:https://cn.httprunner.org/
環境安裝
1 安裝httprunner: pip install httprunner==2.2.5
2 安裝har2case: pip install har2case
3 檢查安裝是否成功:hrun -h/-v;har2case -h/-v
4 安裝locust: pip install locustio
新增命令
在 HttpRunner 安裝成功后,系統中會新增如下 5 個命令:
1 httprunner: 核心命令
2 hrun: httprunner 的縮寫,功能與 httprunner 完全相同
3 locusts: 基于 Locust 實作性能測驗
4 har2case: 輔助工具,可將標準通用的 HAR 格式(HTTP Archive)轉換為YAML/JSON格式的測驗用例
用例生成
(1)利用fiddler/charles對介面資料進行抓包,將結果匯出為XX.har檔案


(2)將匯出的XX.har檔案轉化為json檔案/yaml檔案
轉化為json檔案:har2case xx.har
轉化為yaml檔案:har2case xx.har -2y/--to-yml
(3) 轉化成功后的yaml檔案如下:

status_code: 請求的狀態碼
headers.Content-Type: 將回應頭的內容格式做驗證
content.msg: 回應內容的關鍵字作為驗證
config: 作為整個測驗用例集的全域配置項,包括變數(variables,name)
test: 對應單個測驗用例
name 這個test的名字(用例的名稱)
request 這個test具體發送http請求的各種資訊, 如下:
url 請求的路徑 (若config中有定義base_url, 則完整路徑是用 base_url + url )
method 請求方法 POST, GET等等
headers: 請求頭
請求體: json格式的資料
validate(斷言): 完成請求后, 所要進行的驗證內容. 所有驗證內容均通過該test才算通過,否則失敗.
引數化:
testcases:
-
name: call demo_testcase with data 1
testcase: testcases/test_login.yml
parameters:
# username: ["admin1","admin"]
-username:
- ["admin1"]
- ["admin"]
測驗用例(testcase)嵌套testcases
測驗用例集是測驗用例的無序集合,集合中的測驗用例應該都是相互獨立,不存在先后依賴關系的,
如果確實存在先后依賴關系怎么辦,例如登錄功能和下單功能,正確的做法應該是,在下單測驗用例的前置步驟中執行登錄操作,
- config:
name:order product
- test:
name:login
testcase:testcases/login.yml
- test:
name:add to cart
api:api/add_cart.yml
- test:
name:make order
api:api/make_order.yml
變數取值:
在測驗用例內部,HttpRunner劃分了兩層變數空間作用域context,
- config:作為整個測驗用例的全域配置項,作用域為整個測驗用例;
- test:測驗步驟的變數空間context會繼承或覆寫config中的定義的內容;
- 若某變數在config中定義了,在某test中沒有定義,則該test會繼承該變數
- 若某變數在config中和某test中都定義了,則該test中使用自己定義的變數值
- 各個測驗步驟test的變數空間相互獨立,互不影響;
- 如需在多個測驗步驟test中傳遞引數值,則需要使用extract關鍵字,并且只能從前往后傳遞
回應頭和回應體的提取:
//response headers:
{
“Content - Type”:"application/json",
“Content - Length”:69
}
//response body:
{
“success”:false,
“person”:{
"name":{
“first_name”:"cs",
“last_name”:"css",
},
“age”:29,
“cities”:["Guangzhou","Shenzhen"]
}
}
那么對應的欄位提取方式就為:
“headers.content-type”=>"application/json"
“headers.content-length”=>69
“body.success"/"content.success"/"text.success=>false
"content.person.name.first_name"=>"cs"
"content.person.age"=>29
"content.person.cities"=>["Guangzhou","Shenzhen"]
"content.person.cities.0"=>"Guangzhou"
"content.person.cities.1"=>"Shenzhen"
可以看出,通過點( . )運算子,我們可以從上往下逐級定位到具體的欄位:
- 當下一級為字典時,通過.key來指定下一級的節點,例如.person,指定了content下的person節點;
- 當下一級為串列時,通過.index來指定下一級的節點,例如.0,指定了cities下的第一個元素,
提取HTML的內容(正則運算式)

上傳檔案場景

生成專案檔案
1、進入D盤
2、輸入命令:hrun --startproject 專案名稱
testcases:存放用例
testsuites:存放套件
reports:自動生成報告并放到該目錄

3、 進入到目錄,查看對應的檔案和目錄
可以看到生成的3個目錄和一個py檔案,api debugtalk.py testcases suite
4、將轉化好的XX.har檔案放置在專案檔案夾testcases目錄中
5、運行用例
(1) 運行單個用例:指定具體的xx.yml或xx.json檔案
hrun 檔案路徑/hrun 檔案路徑 --log-level info

(2) 運行多個用例:hrun 檔案的testcases目錄

(3) 運行testsuites目錄:運行testsuites目錄中所有的yml用例

引數化:多個引數三種型別引數化

查看報告
在專案檔案夾report中,生成了html格式的測驗報告,包括log日志記錄(包含request and response data)



注意事項:
(1) 對于依賴性強的測驗用例,當前測驗用例執行失敗后,之后用例都將失敗,因此無執行必要,遇到失敗時不再繼續運行后續用例命令如下:
$ hrun filepath/testcase.yml --failfast
(2) 運行日志中查看更詳細的回應內容
$ hrun docs/data/demo-quickstart-6.json --log-level debug
hrun xx.yaml --log-level debug

(3) 將運行程序中的中間資料作為日志保存:hrun xx.yaml --log-file xx.log

在這里插入圖片描述

介面的性能測驗—locusts
1、執行性能測驗用例:locusts -f 檔案路徑(相對路徑) --processes
(在 Locust 中需使用多核處理器的能力,–processes 引數,可以一次性啟動 1 個 master 和多個 salve,若在 --processes 引數后沒有指定具體的數值,則啟動的 slave 個數與機器的 CPU 核數相同,)

2、用例運行完成后,在瀏覽器中輸入地址 http://localhost:8089/,可查看到locust頁面
- Number of total users to simulate:并發用戶數
- Hatch rate (users spawned/second):多少秒啟動這些并發
- Host:介面的主機地址

locustos在執行請求動作

3、查看性能測驗報告:

(1) 每秒完成的請求數(RPS:Requests Per Second)

(2)回應時間(Response Times),單位ms

(3)不同時間的虛擬用戶數:穩定值(一定時間后)

(4)查看cpu并發壓力:類似負載均衡–CPU usage(cpu的使用率)

(5)引數說明
host:http://10.0.10.27:10080
請求路徑(name):/api/login

(6)腳本執行結果
從測驗結果可以看出,實際上每秒并沒有觸發10個請求(RPS值不到10),因為在locustfile.py檔案里面有個等待機制
min_wait = 1000 最小等待時間1秒
max_wait = 5000 最大等待時間5秒
把max_wait改成1000就可以達到 10 RPS了
locustfile.py
當啟動locusts的時候,會在當前目錄自動生成一個locustfile.py檔案,這個才是locust的腳本檔案

使用locust執行locustfile.py腳本檔案
locust -f locustfile.py
測驗結果 RPS=9.9 接近10
🌻交流學習
最后,為大家奉上我整理的一份包含測驗開發入門,基礎到進階自動化的全部系列知識點PDF,還有測驗開發學習筆記、面試真題匯總檔案、測驗求職精選簡歷的學習資源包,希望對大家有所幫助…… 關注微信公眾號【程式員一凡】,獲取更多資訊~也可加我好友,大家一起學習交流🤗,
🌻推薦閱讀:
💜在簡歷上寫了“精通”后,擁有作業經驗的我被面試官問到窒息
💜位元組跳動測驗崗面試掛在二面,我復盤總結了失敗原因,決定再戰一次
💜“我轉行做測驗開發的這一年多,月薪5K變成了24K”,文科女生的自白
💜測驗工程師真的可以輕松月收入破萬嗎?看了這20張圖(市場+學習指南),我跪了!
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/297559.html
標籤:其他
