Locust耍铜,基于Python的性能測試工具融痛。
- 什么是Locust
- 本文Locust版本
0.7.5
- 原文地址:http://docs.locust.io/en/latest/quickstart.html#
示例locustfile.py
下面是一個簡單的locustfile.py
小示例:
from locust import HttpLocust, TaskSet
def login(l):
l.client.post("/login", {"username":"ellen_key", "password":"education"})
def index(l):
l.client.get("/")
def profile(l):
l.client.get("/profile")
class UserBehavior(TaskSet):
tasks = {index: 2, profile: 1}
def on_start(self):
login(self)
class WebsiteUser(HttpLocust):
task_set = UserBehavior
min_wait = 5000
max_wait = 9000
這里我們定義了一些帶一個參數(shù)(Locust
類實(shí)例)正常Python回調(diào)的Locust任務(wù)稽寒。這些任務(wù)在task
屬性中 TaskSet
類被聚集御雕。接下來刷允,我們有一個代表一個用戶的HttpLocust
類割捅,這里我們定義多久一個模擬用戶應(yīng)該等待在執(zhí)行任務(wù)之間泽谨,同時TaskSet
類應(yīng)該定義用戶行為
.python類TaskSet <locust.core.TaskSet>
可以被嵌入璧榄。
HttpLocust
類從Locust
類中繼承,它有一個用于發(fā)送HTTP請求的HttpSession
屬性在客戶端屬性中吧雹。
另外一種方式骨杂,我們可以使用另外一種更簡潔的方法聲明任務(wù),就是使用@task
聲明雄卷。下面的代碼和上面的代碼一致:
from locust import HttpLocust, TaskSet, task
class UserBehavior(TaskSet):
def on_start(self):
""" on_start is called when a Locust start before any task is scheduled """
self.login()
def login(self):
self.client.post("/login", {"username":"ellen_key", "password":"education"})
@task(2)
def index(self):
self.client.get("/")
@task(1)
def profile(self):
self.client.get("/profile")
class WebsiteUser(HttpLocust):
task_set = UserBehavior
min_wait = 5000
max_wait = 9000
Locust
類(在子類中也叫HttpLocust
類)可以指定針對每一個模擬用戶在執(zhí)行任務(wù)之間設(shè)置最小和最大的等待時間(min_wait和max_wait)搓蚪,像用戶行為一樣。
啟動Locust
為了運(yùn)行上面的Locust文件丁鹉,如果文件被命名為locustfile.py
并保存在當(dāng)前目錄妒潭,我們可以直接運(yùn)行:
locust --host=http://example.com
如果Locust文件在子文件夾或命名與locustfile.py
不一致時,可以通過參數(shù)-f
:
locust -f locust_files/my_locust_file.py --host=http://example.com
運(yùn)行Locust的分布式多線程鳄炉,我們應(yīng)該啟動master通過參數(shù)--master
:
locust -f locust_files/my_locust_file.py --master --host=http://example.com
接下來我們可以啟動slave線程:
locust -f locust_files/my_locust_file.py --slave --host=http://example.com
如果我們想運(yùn)行Locust在多臺機(jī)器杜耙,在啟動slaves時,我們應(yīng)該指定master地址(這不是必須的拂盯,當(dāng)運(yùn)行Locust分布式在同一臺機(jī)器時佑女,master的默認(rèn)地址是127.0.0.1):
locust -f locust_files/my_locust_file.py --slave --master-host=192.168.0.100 --host=http://example.com
查看所有的選項(xiàng),輸入:
locust --help
打開Locust的Web界面
一旦你通過上面的命令啟動了Locust,你應(yīng)該打開瀏覽器并輸入http://127.0.0.1:8089(如果你是在本機(jī)運(yùn)行的Locust)团驱。接下來摸吠,你應(yīng)該可以看到下面的頁面: