Python蝗虫中的任务权重和顺序

时间:2020-04-13 13:54:38

标签: python performance-testing locust

我需要实现下一个逻辑:
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

性能专家可以帮我这个逻辑吗?

2 个答案:

答案 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或其他任何东西。

我认为文档需要进行调整,因为很多人都得到(错误的)印象,即您只能在一个任务中执行单个请求。