Нужен способ передать переменные из класса User в TaskSet в Locust - PullRequest
2 голосов
/ 26 мая 2020

Я новичок в locust и пытаюсь написать нагрузочные тесты. Целью моих пользователей Locust было бы создание элемента путем вызова API createItem. В этом сценарии item_id в каждом запросе должен быть уникальным, поскольку он имеет уникальные критерии.

Это то, что я сделал.

import json
from random import randint

from locust import HttpUser, constant, SequentialTaskSet, task

from flow.helper import read_json


class WebsiteUser(HttpUser):
    """
    User class that does requests to the locust web server running on localhost
    """
    host = "http://localhost:8080/api/"
    wait_time = constant(3)

    @task
    class SequenceOfTasks(SequentialTaskSet):
        item_id = randint(100, 9999)

        @task
        def create_item(self):
            request = read_json('resources/create_item.json')
            request['item-id'] = self.item_id
            response = self.client.post('createItem', json.dumps(request),
                                        headers={'Content-Type': 'application/json'})
            assert response.status_code == 200

Первый запрос успешен, и он создает запись успешно. Но все последующие запросы терпят неудачу, и в журналах сервера приложений я вижу, что он пытается создать элементы с тем же item_id. Есть ли способ динамически генерировать значение в классе WebsiteUser и передавать его в SequenceOfTasks?

1 Ответ

0 голосов
/ 26 мая 2020

Не точный ответ на вопрос, но я получил этот код, работающий без конфликтующих идентификаторов элементов, путем сдвига случайных logi c внутри метода. Примерно так: -

@task
    class SequenceOfTasks(SequentialTaskSet):
        self.item_id = None
        @task
        def create_item(self):
            request = read_json('resources/create_item.json')
            self.item_id = randint(100, 9999)
            request['item-id'] = self.item_id
            ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...