httprunner+locusts+python接口測試框架

一、框架介紹

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

變量取值:

響應頭和響應體的提取:


提取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)

注意事項:

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 查看性能測試報告:

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

?(3)響應時間(Response Times),單位ms

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

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

6、參數說明

host:http://10.0.10.27:10080

請求路徑(name):/api/login

7 腳本執行結果

從測試結果可以看出,實際上每秒并沒有觸發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

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。