我需要实现下一个逻辑:
1)执行on_start方法(例如登录)
2)执行5次下一个任务( task_2 )
3)之后,执行下一个任务( task_3 )10次
返回on_start等...
因此, 最终 我需要登录:1,任务_2:5,任务_3:10。(每1次登录5和10次)
我尝试用下一个代码实现它:
class MyTaskSet(TaskSequence):
def on_start(self):
login()
@seq_task(1)
def task_2(self):
print('Need to be executed 5 times after 1 login')
@seq_task(2)
def task_3(self):
print('Need to be executed 10 times after 1 login')
class LocustUser(HttpLocust):
host = http://localhost
task_set = MyTaskSet
性能专家可以帮我这个逻辑吗?
答案 0 :(得分:1)
如果我正确理解您的用例,您可以根据登录逻辑创建一个任务。如果登录在 on_start()
中,我认为它只会运行一次。从 Locust 1.4.3 版本开始,这可以这样完成:
class MyTaskSet(SequentialTaskSet):
@task(1)
def task_login(self):
login()
@task(5)
def task_2(self):
print('Need to be executed 5 times after 1 login')
@task(10)
def task_3(self):
print('Need to be executed 10 times after 1 login')
这应该按照分配的权重按顺序运行任务。
答案 1 :(得分:0)
我认为最简单的方法是在单个任务中使用普通的for循环。没有on_start,没有seq_task或其他任何东西。
我认为文档需要进行调整,因为很多人都得到(错误的)印象,即您只能在一个任务中执行单个请求。