一、用户类
locust 是一个Python 模块,它可以从其他文件或包中导入,用户类,代表一个用户
class StartUser(HttpUser):
当开始负载测试时,将为每个模拟用户创建一个User类的实例,并且它们将开始在自己的绿色线程中运行。这些用户运行时,他们选择执行的任务,休眠一会儿,然后选择一个新任务,依此类推
二、属性
1.wait_time
模拟用户在执行任务之间等待多长时间,应返回秒数
代码如下(示例):
wait_time = between(1, 5)
设置时间的3个函数:
between 模拟用户在每次执行每一个任务后等待介于最小值和最大值之间的随机时间
constant 用于确保任务每秒运行(最多)X 次的自适应时间
constant_pacing 用于确保任务每 X 秒(最多)运行一次的自适应时间
2.task
可以使用@task装饰器,声明用户类下的方法为任务,@task是 locust的核心
3.weight
如果文件中存在多个用户类,并且在命令行上没有指定用户类,Locust 将生成相同数量的每个用户类,weight为不同的用户类赋予不同的运行数量
4.host
要加载的主机,即URL前缀“ http://google.com ”
通常,启动时在Locust的Web UI,或命令行中使用–host指定
如果在用户类中声明了主机属性,则–host 在命令行或Web请求中未指定任何主机属性的情况下将使用该属性
5.environment
环境属性,对用户正在其中运行的引用,使用它与环境或runner所包含的环境进行交互
三、应用
import time
from locust import HttpUser, task, between
class StartUser(HttpUser):
wait_time = between(1, 5)
@task
def hello_world(self):
self.client.get("/hello")
self.client.get("/world")
@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)
def on_start(self):
self.client.post("/api/v1/login",{"username": "admin","password": "admin123"})