LocustIO - 如何只发送一次 DELETE 查询

LocustIO - how to send DELETE query only once

我遇到了 locustIO 问题。

代码如下:

@task
def delete_test(self):
for number in range(0, 10):
    response = self.client.request(method="GET", url="api/number/%s" % number,
                                   headers={'X-Username': 'admin', 'X-Password': 'admin'},
                                   catch_response=True)
    
    if response.status_code == 200:
        self.client.request(method="DELETE", url="api/number/%s" % number,
                            headers={'X-Username': 'admin', 'X-Password': 'admin'})

这是我的问题,如您所见,首先我使用 GET 查询检查 %s(number) 是否存在。

在没有蝗虫的纯 python 中,如果我将收到 !200 代码,将不会执行 DELETE 查询。

但正如您所知,在 Locust 中我们正在模拟用户,所以问题是 - 如何只删除一次?

因为删除后另一个模拟用户也尝试再次删除它,我的测试一次又一次失败。

即使在官方 documentation/udemy 课程中我也找不到解决方案。

也许只是用一个标志来说明特定号码是否已被删除?

像这样:

class MyUser(HttpUser):
    deleted_numbers = {}

    @task
    ...
        if response.status_code == 200 and number not in MyUser.deleted_numbers:
            MyUser.deleted_numbers[number] = True
            self.client.request(method="DELETE", url="api/number/%s" % number, ...)

请注意,这不适用于分布式 运行。