【问题标题】:Task weight and sequence in python locustpython locust中的任务权重和顺序
【发布时间】:2020-07-26 02:28:16
【问题描述】:

我需要实现下一个逻辑:
1)执行on_start方法(如login
2)执行下一个任务(task_2)5次
3) 之后执行下一个任务 (task_3) 10 次
返回 on_start 等...
所以最后我需要登录:1,task_2:5,task_3:10。(每次登录 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

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

【问题讨论】:

    标签: python performance-testing locust


    【解决方案1】:

    我认为最简单的方法就是在单个任务中使用普通的 for 循环。没有 on_start,没有 seq_task 或任何东西。

    我认为文档需要调整,因为很多人得到的(不正确的)印象是你只能在一个任务中执行一个请求。

    【讨论】:

      【解决方案2】:

      如果我正确理解您的用例,您可以根据您的登录逻辑创建一个任务。如果登录名是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')
      

      这应该按照分配的权重按顺序运行任务。

      【讨论】:

        猜你喜欢
        • 2014-03-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多