将相同的值传递给蝗虫中的多个任务

Passing same value to multiple tasks in locust

我们有一个要求,我们需要发送一个 post 请求,然后发送一个相同端点的删除请求 (REST API)。

需要为每次迭代中的每个用户的每个 post 请求生成一个唯一的 ID。 生成的唯一字符串放在任务 class (SequentialTask​​Set).

的 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}/')

你可以这样试试,希望对大家有帮助。