在蝗虫文档中,我们只能使用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
答案 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 继承自 SequentialTaskSet 以按顺序运行所有任务。