Task
当负载测试开始时,将为每个模拟用户创建一个User类的实例,他们将开始在自己的绿色线程中运行。当这些用户运行时,他们选择他们执行的任务,休眠一段时间,然后选择一个新任务。
这些任务时普通的python可调用文件——如果我们正在对拍卖网站进行负载测试——他们可执行诸如“加载起始页”,“搜索某些产品”,”出价“等操作。
@task 装饰器
为用户添加任务的最简单方法时使用task装饰器
@task装饰器的权重
@task采用可选的权重参数,可用于指定任务的执行比率。
在以下示例中,task2被选中的可能性时task1的2倍
from locust import User,task,between
class MyUser(User):
wait_time = between(5,15)
@task(3)
def task1():
pass
@task(6)
def task2():
pass
task【任务属性】
定义用户任务的另一种方法时设置tasks属性
tasks属性可以是任务列表,也可是字典<Task:int>,其中Task可以是python可调用对象,也可是TaskSet类。
如果任务是一个普通的python函数,他们会收到一个参数,即正在执行任务的User实例。
from locust import User,constant
def my_task(user):
pass
class MyUser(User):
tasks = [my_task]
wait_time = constant(1)
如果将tasks属性指定为一个列表,则每次执行任务时,都会从tasks属性中随机选择。然而,如果任务是一个字典——可调用对象作为键,以整数作为值——将随机选择要执行的任务,但以整数作为比率。
释义:my_task被执行的可能性是another_task的 3 倍。
{my_task: 3, another_task: 1}
在内部,上面的字典将被扩展为一个列表(并且更新了tasks属性),如下所示:
[my_task, my_task, my_task, another_task]