所有用户完成任务后如何停止蝗虫负载测试?

时间:2020-07-14 12:49:46

标签: locust

在蝗虫文档中,我们只能使用self.interrupt()停止任务,但它将移至父类。它不会停止负载测试。我想在所有用户登录并完成他们的任务后停止完整的负载测试

蝗虫版本:1.1

class RegisteredUser(User):
    @task
    class Forum(TaskSet):
        @task(5)
        def view_thread(self):
            pass

        @task(1)
        def stop(self):
            self.interrupt()

    @task
    def frontpage(self):
        pass

2 个答案:

答案 0 :(得分:0)

无法停止单个用户,但是您可以致电self.environment.runner.quit()来停止整个运行。

更多信息:https://docs.locust.io/en/stable/writing-a-locustfile.html#environment-attribute

答案 1 :(得分:0)

我的框架为每个用户创建凭据和支持变量的元组列表。我已将所有用户凭据、令牌、支持文件名等存储在这些元组中作为列表的一部分。 (其实是在启动 locust 之前自动完成的)

我将该列表导入 locustfile

# creds is created before running locust file and can be stored outside or part of locust # file
creds = [('demo_user1', 'pass1', 'lnla'),
         ('demo_user2', 'pass2', 'taam9'),
         ('demo_user3', 'pass3', 'wevee'),
         ('demo_user4', 'pass4', 'avwew')]

class RegisteredUser(SequentialTaskSet)

    def on_start(self):
        self.credentials = creds.pop()

    @task
    def task_one_name(self):
        task_one_commands

    @task
    def task_two_name(self):
        task_two_commands

    @task
    def stop(self):
        if len(creds) == 0:
            self.user.environment.reached_end = True
            self.user.environment.runner.quit()


class ApiUser(HttpUser):
    tasks = [RegisteredUser]
    host = 'hosturl'

我在任务中使用 self.credentials 我在班级中创建了 stop 函数

另外,观察 RegisteredUser 继承自 SequentialTask​​Set 以按顺序运行所有任务。