将相同的值传递给蝗虫中的多个任务
Passing same value to multiple tasks in locust
我们有一个要求,我们需要发送一个 post 请求,然后发送一个相同端点的删除请求 (REST API)。
需要为每次迭代中的每个用户的每个 post 请求生成一个唯一的 ID。
生成的唯一字符串放在任务 class (SequentialTaskSet).
的 on_start() 方法中
问题是,它运行一次迭代,但为每个用户的连续迭代生成相同的 ID。
为了在每次迭代中为每个用户获得唯一的 ID,在任务本身中生成唯一的字符串是可行的,但这里的问题是,我无法将相同的 ID 传递给需要发送删除请求的下一个任务。
代码现在是这样的:
class StudentClass(SequentialTaskSet):
rndString = None
def on_start(self):
self.rndString = str(uuid.uuid4())
@task
def postRequest(self):
endpoint = "/students"
headers = {
'Authorization': 'Bearer token',
'content-type': 'application/json', 'accept': 'application/json'
}
data = {
"Id": f'std-{self.rndString}',
}
with self.client.post(endpoint, name="Post request", headers=headers, data=json.dumps(data),
catch_response=True) as response:
........
感谢任何帮助实现这一点。
我认为如果您不需要调用 post 并删除具有不同权重的请求,您可以在同一任务中执行这两个调用。是否有我遗漏的东西需要您为 post 分离任务并删除呼叫?如果您确实需要将它们分开,您可以在 post 任务中更新 self.rndString
,它将在删除中使用更新的任务。
@task(1)
def hello_world(self):
response = self.client.get("/listing")
print(response.text)
@task
def fill_crud(self):
response = self.client.post('/api/fill_post/', {"number_1": 76, "number_2": 897, "number_3": 564, "text_4": "Sneha"})
print(response.status_code)
res = json.loads(response.text)
response_id = (res['id'])
response_put = self.client.put(f'/api/fill_post/{response_id}/', {"number_1": 76576, "number_2": 89657, "number_3": 5654, "text_4": "Sneha"})
response_patch = self.client.patch(f'/api/fill_post/{response_id}/', {"text_4": "Suveksha"})
response_delete = self.client.delete(f'/api/fill_post/{response_id}/')
你可以这样试试,希望对大家有帮助。
我们有一个要求,我们需要发送一个 post 请求,然后发送一个相同端点的删除请求 (REST API)。
需要为每次迭代中的每个用户的每个 post 请求生成一个唯一的 ID。 生成的唯一字符串放在任务 class (SequentialTaskSet).
的 on_start() 方法中问题是,它运行一次迭代,但为每个用户的连续迭代生成相同的 ID。 为了在每次迭代中为每个用户获得唯一的 ID,在任务本身中生成唯一的字符串是可行的,但这里的问题是,我无法将相同的 ID 传递给需要发送删除请求的下一个任务。
代码现在是这样的:
class StudentClass(SequentialTaskSet):
rndString = None
def on_start(self):
self.rndString = str(uuid.uuid4())
@task
def postRequest(self):
endpoint = "/students"
headers = {
'Authorization': 'Bearer token',
'content-type': 'application/json', 'accept': 'application/json'
}
data = {
"Id": f'std-{self.rndString}',
}
with self.client.post(endpoint, name="Post request", headers=headers, data=json.dumps(data),
catch_response=True) as response:
........
感谢任何帮助实现这一点。
我认为如果您不需要调用 post 并删除具有不同权重的请求,您可以在同一任务中执行这两个调用。是否有我遗漏的东西需要您为 post 分离任务并删除呼叫?如果您确实需要将它们分开,您可以在 post 任务中更新 self.rndString
,它将在删除中使用更新的任务。
@task(1)
def hello_world(self):
response = self.client.get("/listing")
print(response.text)
@task
def fill_crud(self):
response = self.client.post('/api/fill_post/', {"number_1": 76, "number_2": 897, "number_3": 564, "text_4": "Sneha"})
print(response.status_code)
res = json.loads(response.text)
response_id = (res['id'])
response_put = self.client.put(f'/api/fill_post/{response_id}/', {"number_1": 76576, "number_2": 89657, "number_3": 5654, "text_4": "Sneha"})
response_patch = self.client.patch(f'/api/fill_post/{response_id}/', {"text_4": "Suveksha"})
response_delete = self.client.delete(f'/api/fill_post/{response_id}/')
你可以这样试试,希望对大家有帮助。