官方网站:https://www.locust.io/
官方文档:http://docs.locust.io/en/stable/installation.html
安装
pip3 install locust
查看安装版本
locust -V
@task
def hello_world(self):
self.client.get(url='/s?wd=phyger',verify=False)
@task(3)
def view_items(self):
for item_id in range(10):
self.client.get(f"/item?id={item_id}", name="/item")
time.sleep(1)
声明两个@task,其中一个@task的权重为3,表示view_items被选择的可能性是hello_world的三倍,运行后,随机挑选一个@task执行,任务执行完,用户将在等待时间后,会再次随机选择一个新任务重复执行
如果文件中存在多个用户类,并且在命令行上没有指定用户类,Locust将生成相同数量的每个用户类。您还可以通过将它们作为命令行参数传递来指定要使用同一locustfile中的哪些用户类:
locust -f locust_file.py WebUser MobileUser
可以为用户类设置权重,例如,WebUser的可能性是MobileUser的三倍:
class WebUser(User):
weight = 3
class MobileUser(User):
weight = 1
可以为用户类具体的用户数,这种情况下,权重属性将被忽略:
class AdminUser(User):
wait_time = constant(600)
fixed_count = 1
def on_start(self):
self.client.post("/login", json={"username":"foo", "password":"bar"})
任务开始时调用on_start,同样的任务结束可以调用on_stop
class QuickstartUser(HttpUser):
wait_time = between(1, 5)
host = "https://www.baidu.com"
@task
def getIndex(self):
with self.client.get(url='/s?wd=hello', verify=False) as rep:
if not rep.status_code:
self.environment.runner.quit()
"""未指定wait_time,则下一个任务将在完成后立即执行
between最小值和最大值之间的随机时间
constant固定时间""