<meta charset="utf-8">
一、框架介紹
1、HttpRunner
是一款面向 HTTP(S) 協(xié)議的通用測(cè)試框架,只需編寫維護(hù)一份YAML/JSON腳本,即可實(shí)現(xiàn)自動(dòng)化測(cè)試、性能測(cè)試、線上監(jiān)控、持續(xù)集成等多種測(cè)試需求。
2、Locust
Locust是一款易于使用的分布式用戶負(fù)載測(cè)試工具。它用于對(duì)網(wǎng)站(或其他系統(tǒng))進(jìn)行負(fù)載測(cè)試,并確定系統(tǒng)可以處理多少并發(fā)用戶。HttpRunner 通過復(fù)用Locust ,可以在無需對(duì) YAML/JSON 進(jìn)行任何修改的情況下,直接運(yùn)行性能測(cè)試。
3 httprunner使用手冊(cè)
附httprunner中文使用文檔地址:https://cn.httprunner.org/
二、環(huán)境安裝
1 安裝httprunner: pip install httprunner==1.4.2 (pip install httprunner==2.2.5)
2 安裝har2case: pip install har2case
3 檢查安裝是否成功:hrun -h/-v;har2case -h/-v
4 安裝locust: pip install locustio
三、在 HttpRunner 安裝成功后,系統(tǒng)中會(huì)新增如下 5 個(gè)命令:
1 httprunner: 核心命令
2 hrun: httprunner 的縮寫,功能與 httprunner 完全相同
3 locusts: 基于 Locust 實(shí)現(xiàn)性能測(cè)試
4 har2case: 輔助工具,可將標(biāo)準(zhǔn)通用的 HAR 格式(HTTP Archive)轉(zhuǎn)換為YAML/JSON格式的測(cè)試用例
四、用例生成
(1)利用fiddler/charles對(duì)接口數(shù)據(jù)進(jìn)行抓包,將結(jié)果導(dǎo)出為XX.har文件
(2)將導(dǎo)出的XX.har文件轉(zhuǎn)化為json文件/yaml文件
轉(zhuǎn)化為json文件:har2case xx.har
轉(zhuǎn)化為yaml文件:har2case xx.har -2y/--to-yml
(3) 轉(zhuǎn)化成功后的yaml文件如下:
status_code:請(qǐng)求的狀態(tài)碼
headers.Content-Type:將響應(yīng)頭的內(nèi)容格式做驗(yàn)證
content.msg:響應(yīng)內(nèi)容的關(guān)鍵字作為驗(yàn)證
config:作為整個(gè)測(cè)試用例集的全局配置項(xiàng),包括變量(variables,name)
test:對(duì)應(yīng)單個(gè)測(cè)試用例
name 這個(gè)test的名字(用例的名稱)
request 這個(gè)test具體發(fā)送http請(qǐng)求的各種信息, 如下:
url 請(qǐng)求的路徑 (若config中有定義base_url, 則完整路徑是用 base_url + url )
method 請(qǐng)求方法 POST, GET等等
headers:請(qǐng)求頭
請(qǐng)求體:json格式的數(shù)據(jù)
validate(斷言): 完成請(qǐng)求后, 所要進(jìn)行的驗(yàn)證內(nèi)容. 所有驗(yàn)證內(nèi)容均通過該test才算通過,否則失敗.
參數(shù)化:
testcases:
name: call demo_testcase with data 1
testcase: testcases/test_login.yml
parameters:
# username: ["admin1","admin"]
** -username:**
** - ["admin1"]**
** - ["admin"]**
測(cè)試用例(testcase)嵌套testcases
變量取值:
響應(yīng)頭和響應(yīng)體的提取:
提取HTML的內(nèi)容(正則表達(dá)式)
上傳文件場(chǎng)景
四、生成項(xiàng)目文檔:
(1)進(jìn)入D盤
(2)輸入命令:hrun --startproject 項(xiàng)目名稱
testcases:存放用例
** testsuites:存放套件**
** reports:自動(dòng)生成報(bào)告并放到該目錄**
3、 進(jìn)入到目錄,查看對(duì)應(yīng)的文件和目錄
可以看到生成的3個(gè)目錄和一個(gè)py文件,api debugtalk.py testcases suite
4、將轉(zhuǎn)化好的XX.har文件放置在項(xiàng)目文件夾testcases目錄中
5 、運(yùn)行用例
(1)運(yùn)行單個(gè)用例:指定具體的xx.yml或xx.json文件
hrun 文件路徑/hrun 文件路徑 --log-level info
(2)運(yùn)行多個(gè)用例:hrun 文件的testcases目錄
(3) 運(yùn)行testsuites目錄:運(yùn)行testsuites目錄中所有的yml用例
參數(shù)化:多個(gè)參數(shù)三種類型參數(shù)化
六、查看報(bào)告
在項(xiàng)目文件夾report中,生成了html格式的測(cè)試報(bào)告,包括log日志記錄(包含request and response data)
注意事項(xiàng):
hrun xx.yaml --log-level debug
(3) 將運(yùn)行過程中的中間數(shù)據(jù)作為日志保存:hrun xx.yaml --log-file xx.log
七、接口的性能測(cè)試---locusts
1 執(zhí)行性能測(cè)試用例:locusts -f 文件路徑(相對(duì)路徑) --processes
(在 Locust 中需使用多核處理器的能力,--processes 參數(shù),可以一次性啟動(dòng) 1 個(gè) master 和多個(gè) salve。若在 --processes 參數(shù)后沒有指定具體的數(shù)值,則啟動(dòng)的 slave 個(gè)數(shù)與機(jī)器的 CPU 核數(shù)相同。)
2 用例運(yùn)行完成后,在瀏覽器中輸入地址 http://localhost:8089/,可查看到locust頁(yè)面
Number of total users to simulate:并發(fā)用戶數(shù)
Hatch rate (users spawned/second):多少秒啟動(dòng)這些并發(fā)
Host:接口的主機(jī)地址
locustos在執(zhí)行請(qǐng)求動(dòng)作
3 查看性能測(cè)試報(bào)告:
(2) 每秒完成的請(qǐng)求數(shù)(RPS:Requests Per Second)
(3)響應(yīng)時(shí)間(Response Times),單位ms
(4)不同時(shí)間的虛擬用戶數(shù):穩(wěn)定值(一定時(shí)間后)
(5)查看cpu并發(fā)壓力:類似負(fù)載均衡--CPU usage(cpu的使用率)
6、參數(shù)說明
host:http://10.0.10.27:10080
請(qǐng)求路徑(name):/api/login
多機(jī)主從模式
當(dāng)一臺(tái)機(jī)器的并發(fā)數(shù)無法滿足你的業(yè)務(wù)需求時(shí),可以在多臺(tái)機(jī)器上分布式的執(zhí)行性能測(cè)試。
選擇其中一臺(tái)電腦,啟動(dòng)master節(jié)點(diǎn),因?yàn)橹鞴?jié)點(diǎn)無法操作別的節(jié)點(diǎn),所以必須在其它機(jī)器上啟動(dòng)從屬Locust節(jié)點(diǎn),后面跟上--slave參數(shù),以及 --master-host(指定主節(jié)點(diǎn)的IP /主機(jī)名)。
locust -f locustfile.py --master
接著在其它機(jī)器上(環(huán)境和主節(jié)點(diǎn)環(huán)境一致,都需要有l(wèi)ocust的運(yùn)行環(huán)境和腳本),啟動(dòng) slave 節(jié)點(diǎn),設(shè)置 --master-host
locust -f locustfile.py --slave --master-host=192.168.x.xx
參數(shù)介紹:
--master 以主服務(wù)模式啟動(dòng)Locust,web界面打開也是以此機(jī)IP為地址。
--slave 以從屬服務(wù)模式啟動(dòng)Locust
master-host=192.168.x.xx 用于從屬服務(wù)指定主服務(wù)的地址
--master-port=8089 用于從屬服務(wù)指定主服務(wù)的端口
無網(wǎng)頁(yè)模式啟動(dòng), -c是設(shè)置并發(fā)用戶數(shù),-r是設(shè)置每秒進(jìn)入用戶數(shù),-t設(shè)置運(yùn)行時(shí)長(zhǎng)
locust -f locust_files/my_locust_file.py --no-web -c 100 -r 10
作者:何以笙簫默_4eb8
鏈接:http://www.lxweimin.com/p/dad3005c050c
來源:簡(jiǎn)書
著作權(quán)歸作者所有。商業(yè)轉(zhuǎn)載請(qǐng)聯(lián)系作者獲得授權(quán),非商業(yè)轉(zhuǎn)載請(qǐng)注明出處。
關(guān)于python安裝locust的包的時(shí)候,出現(xiàn)please update your reference
遇到這種情況的時(shí)候,可以這么來解決,就是在安裝源后面加一個(gè)版本號(hào),我這里以豆瓣的安裝源為例
pip3 install -i https://pypi.douban.com/simple/ locustio==0.14.6
這么輸入后,再次點(diǎn)擊回車,就可以安裝成功