為了實際加載測試系統(tǒng)棺亭,我們需要發(fā)出HTTP請求蝎宇。我們可以通過HttpLocust來完成Http相關(guān)的請求弟劲。例如上一課演示的代碼:
from locust import HttpLocust, TaskSet, task
class MyTaskSet(TaskSet):
@task(2)
def index(self):
self.client.get("***1")
@task(1)
def about(self):
self.client.get("***2")
class MyLocust(HttpLocust):
task_set = MyTaskSet
min_wait = 5000
max_wait = 15000
task_set:指向定義了用戶行為的類
min_wait:模擬負(fù)載的任務(wù)之間執(zhí)行時的最小等待時間,單位為毫秒
max_wait:模擬負(fù)載的任務(wù)之間執(zhí)行時的最大等待時間姥芥,單位為毫秒
PS:默認(rèn)情況下函卒,時間是在min_wait和max_wait之間隨機(jī)選擇,但是可以通過將wait_function設(shè)置為任意函數(shù)來使用任何用戶定義的時間分布撇眯。
啟動Locust
- 如果啟動的locust文件名為locustfile.py并位于當(dāng)前工作目錄中报嵌,可以在編譯器中直接運(yùn)行該文件,或者通過cmd熊榛,執(zhí)行如下命令:
locust --host=URL
2.如果Locust文件位于子目錄下且名稱不是locustfile.py锚国,可以使用-f命令啟動上面的示例locust文件:
locust -f testscript/locusttest.py --host=URL
3.如果要運(yùn)行分布在多個進(jìn)程中的Locust,通過指定-master以下內(nèi)容來啟動主進(jìn)程 :
locust -f testscript/locusttest.py --master --host=URL
4.如果要啟動任意數(shù)量的從屬進(jìn)程玄坦,可以通過-salve命令來啟動locust文件:
locust -f testscript/locusttest.py --salve --host=URL
5.如果要運(yùn)行分布式Locust血筑,必須在啟動從機(jī)時指定主機(jī)(運(yùn)行分布在單臺機(jī)器上的Locust時不需要這樣做,因為主機(jī)默認(rèn)為127.0.0.1):
locust -f testscript/locusttest.py --slave --master-host=localhost
6.啟動locust文件成功后煎楣,編譯器控制臺會顯示如下信息:
[2019-5-28 11:01:44,727] IMYalost/INFO/locust.main: Starting web monitor at *:8089
[2019-5-28 11:01:44,729] IMYalost/INFO/locust.main: Starting Locust 0.8
PS:8089是該服務(wù)啟動的端口號豺总,如果是本地啟動,可以直接在瀏覽器輸入http://localhost:8089打開UI界面择懂,如果是其他機(jī)器搭建locust服務(wù)喻喳,則輸入該機(jī)器的IP+端口即可;
Locust運(yùn)行
啟動頁
Number of users to simulate:設(shè)置模擬的用戶總數(shù)
Hatch rate (users spawned/second):每秒啟動的虛擬用戶數(shù)
Start swarming:執(zhí)行l(wèi)ocust腳本
HOST:當(dāng)前測試的host
測試結(jié)果頁
STOP:點擊可以停止locust腳本運(yùn)行困曙;
Type:請求類型表伦,即接口的請求方法;
Name:請求路徑慷丽;
requests:當(dāng)前已完成的請求數(shù)量蹦哼;
fails:當(dāng)前失敗的數(shù)量;
Median:響應(yīng)時間的中間值要糊,即50%的響應(yīng)時間在這個數(shù)值范圍內(nèi)纲熏,單位為毫秒;
Average:平均響應(yīng)時間锄俄,單位為毫秒局劲;
Min:最小響應(yīng)時間,單位為毫秒珊膜;
Max:最大響應(yīng)時間容握,單位為毫秒宣脉;
Content Size:所有請求的數(shù)據(jù)量车柠,單位為字節(jié);
reqs/sec:每秒鐘處理請求的數(shù)量,即QPS竹祷;
模塊說明
New test:點擊該按鈕可對模擬的總虛擬用戶數(shù)和每秒啟動的虛擬用戶數(shù)進(jìn)行編輯谈跛;
Statistics:類似于jmeter中Listen的聚合報告;
Charts:測試結(jié)果變化趨勢的曲線展示圖塑陵,分別為每秒完成的請求數(shù)(RPS)感憾、響應(yīng)時間、不同時間的虛擬用戶數(shù)令花;
Failures:失敗請求的展示界面阻桅;
Exceptions:異常請求的展示界面;
Download Data:測試數(shù)據(jù)下載模塊兼都, 提供三種類型的CSV格式的下載嫂沉,分別是:Statistics、responsetime扮碧、exceptions趟章;
無web界面的Locust運(yùn)行
host:非必填,測試host
no-web:無web界面
c:并發(fā)用戶數(shù)量
r:每秒啟動用戶數(shù)量
t:持續(xù)時間(1h慎王、10m蚓土、200s)
csv:輸出csv數(shù)據(jù)的路徑
直接會輸出結(jié)果: