locust默认是随机执行taskset里面的task的。
权重是通过在@task参数中设置的,如代码中my_task1:my_task2:my_task3是1:3:2,实际执行时的代码,在user中tasks会将任务生成列表[my_task1,my_task2,my_task2,my_task2,my_task3,my_task3]
执行时就随机从列表中选取task。
task不止一个时,可以通过@tag给task打标签进行分类,在执行测试时,通过--tags name执行指定带标签的task。
# locust -f .\example_taskset_weight.py --tags tag1
只会执行
my_task1和my_task2
#!/usr/bin/env python
# -*- coding:utf-8 -*-
# import os
from locust import TaskSet, HttpUser, task, tag, constant
class MyTaskSet(TaskSet):
""" 定义用户行为 """
wait_time = constant(1)
def on_start(self):
print("Executing on_start ...")
def on_stop(self):
print("Executing on_stop ...")
@tag("tag1")
@task(1)
def my_task1(self):
print("Executing my_task1 ...")
@tag("tag1", "tag2")
@task(3)
def my_task2(self):
print("Executing my_task2 ...")
@tag("tag2")
@task(2)
def my_task3(self):
print("Executing my_task3 ...")
class MyUserGroup(HttpUser):
""" 定义线程组 """
tasks = [MyTaskSet]
host = "http://192.168.2.129"
# locust -f .\example_taskset_weight.py --tags tag1