如何从 Locust 进行顺序 Http 调用

问题描述 投票:0回答:4

在 Locust 负载测试环境中,任务被定义并随机调用。 但是,如果我希望在特定任务之后执行任务。那我该怎么办呢? 例如:在每次“X”url 调用之后,我希望根据“X”的响应调用“Y”url。

locust
4个回答
6
投票

根据我的经验,我发现最好将 Locust 任务建模为完全相互独立,并且每个任务都涵盖用户场景或行为(例如,客户登录、搜索一本书并将其添加到购物车)。这主要是因为这是对用户行为的更接近的模拟。

您是否尝试过仅对同一任务提出多个请求,并且仅根据您的响应进行 if / else 处理? Carl Byström 演讲中的这张幻灯片遵循上述方法。


4
投票

您只需进行连续的获取或发布即可。当您定义任务时,请执行以下操作:

@task(10)
def my_task(l):
    l.client.get('/X')
    l.client.get('/Y')

2
投票

有一个选项可以创建从

TaskSequence
类继承的自定义任务集。

然后您应该将

seq_task
装饰器添加到所有任务集方法中以顺序运行其任务。

https://docs.locust.io/en/latest/writing-a-locustfile.html#tasksequence-class


0
投票

截至 2024 年,您可以使用

TaskSeq
- 说我想运行
task1
10 次,然后运行
task2
10 次

from locust import HttpUser, TaskSequence, seq_task

class MyTaskSequence(TaskSequence):
    @seq_task(1)
    def task1(self):
        for _ in range(10):
            self.client.get("/path1")
            print("Executing task1")

    @seq_task(2)
    def task2(self):
        for _ in range(10):
            self.client.get("/path2")
            print("Executing task2")

class WebsiteUser(HttpUser):
    tasks = [MyTaskSequence]
    wait_time = lambda _: 1
© www.soinside.com 2019 - 2024. All rights reserved.