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, ...)
请注意,这不适用于分布式 运行。
我遇到了 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, ...)
请注意,这不适用于分布式 运行。