locust官方文档-Tasks

Locust在进行负载测试时,通过User类实例执行任务。任务是Python可调用对象,可通过@task装饰器和tasks属性定义,权重参数决定执行概率。@tag装饰器用于按标签筛选任务,结合--tags和--exclude-tags参数控制测试执行的任务。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Tasks
当负载测试启动时,将为每个模拟用户创建一个User类的实例,它们将开始在自己的green thread中运行。当这些用户运行时,他们选择他们执行的任务,休眠一段时间,然后选择一个新任务,等等。
这些任务是普通的python可调用对象,如果我们对一个拍卖网站进行负载测试,它们可以做诸如“加载起始页面”、“搜索某些产品”、“出价”等事情。
@task 装饰器
为用户添加任务最简单的方法是使用任务装饰器。

from locust import User, task, constant

class MyUser(User):
    wait_time = constant(1)

    @task
    def my_task(self):
        print("User instance (%r) executing my_task" % self)

@task有一个可选的权重参数,可以用来指定任务的执行比例。在下面的例子中,task2被选为task1的概率是task1的两倍:

from locust import User, task, between

class MyUser(User):
    wait_time = between(5, 15)

    @task(3)
    def task1(self):
        pass

    @task(6)
    def task2(self):
        pass

tasks 属性
定义User任务的另一种方法是设置tasks属性。
tasks属性要么是Task的列表,要么是<Task: int> dict,其中Task要么是一个python可调用对象,要么是一个TaskSet类。如果任务是一个普通的python函数,它们会收到一个参数,即正在执行任务的User实例。
下面是一个User任务声明为普通python函数的示例:

from locust import User, constant

def my_task(user):
    pass

class MyUser(User):
    tasks = [my_task]
    wait_time = constant(1)

如果tasks属性指定为一个列表,那么每次执行任务时,它将从tasks属性中随机选择。但是,如果tasks是一个字典-将可调用对象作为键,将int作为值-将随机选择要执行的任务,但以int作为比例。所以有这样一个任务:

{my_task: 3, another_task: 1}

My_task被执行的可能性是另一个task的3倍。
在内部,上面的字典实际上会被扩展成一个列表(task属性也会被更新),如下所示:

[my_task, my_task, my_task, another_task]

然后使用Python的random.choice()从列表中挑选任务。
@tag 装饰器
通过使用@tag装饰器来标记任务,您可以使用–tags和–exclude-tags参数来挑选测试期间执行的任务。考虑下面的例子:

from locust import User, constant, task, tag

class MyUser(User):
    wait_time = constant(1)

    @tag('tag1')
    @task
    def task1(self):
        pass

    @tag('tag1', 'tag2')
    @task
    def task2(self):
        pass

    @tag('tag3')
    @task
    def task3(self):
        pass

    @task
    def task4(self):
        pass

如果您使用–tags tag1开始这个测试,那么在测试期间只会执行task1和task2。如果您以–tags tag2 tag3开始,那么只有task2和task3会被执行。
–exclude-tags将以完全相反的方式运行。因此,如果使用–exclude-tags tag3开始测试,那么只会执行task1、task2和task4。排除总是胜过包含,所以如果一个任务有一个你包含的标签和一个你排除的标签,它将不会被执行。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值