Остановить саранчу после указания c количества запросов - PullRequest
0 голосов
/ 11 февраля 2020

Я использую саранчу 0.14.4. Я тестирую остальные API. Я хочу смоделировать сценарий, когда пользователь войдет в приложение, а затем сделает несколько запросов GET. Например, я хочу, чтобы пользователь сделал 3 запроса GET после входа в систему. Я хочу, чтобы количество пользователей равнялось 3. В этом случае каждый пользователь должен выполнить вход и сделать запрос 3 GET, и саранча должна остановиться. Таким образом, всего 12 запросов.

Я обнаружил, что ранее была опция -n для указания номера запроса, однако ее нет в версии 0.14.4.

Я нашел похоже вопрос Однако это не работает для меня.

Вот мой фрагмент кода:

class MyTaskSet(TaskSet):

def on_start(self):
    """ on_start is called when a Locust start before any task is scheduled """
    self.login()

def login(self):
    resp = self.client.post("https://" + hostip + "/session", auth=(username, password),verify=False)
    data = json.loads(resp.text)
    global session_id
    session_id = data['value']

@seq_task(1)
def user_workflow(self):
    for i in range(0, 1, 1):
        self.get_counters()
        self.get_providers()
        self.get_metrics()

def get_counters(self):
    self.client.get("/counters",headers={'session-id': session_id, 'Accept': 'application/json',
                              'Content-Type': 'application/json'})

def get_providers(self):
    self.client.get("/providers",headers={'session-id': session_id, 'Accept': 'application/json',
                              'Content-Type': 'application/json'})

def get_metrics(self):
    self.client.get("/metrics",headers={'session-id': session_id, 'Accept': 'application/json',
                              'Content-Type': 'application/json'})
@seq_task(2)
def done(self):
    raise StopLocust()

Когда я пытаюсь запустить тест с командой

$locust -f locustfile.py --no-web -c 3 -r 3

, я получаю следующий вывод:

Type                 Name               #reqs 50%

 GET                  /counters         1    840 
 GET                  /metrics          1    470 
 GET                  /providers        1    480 
 POST                 /session          3   1300 

 None                 Aggregated        6   1300 

Чего я хочу добиться, так это чтобы каждый пользователь выполнил вход в систему и сделал 3 запроса GET, а саранча должна остановиться, когда последний пользователь выполнит третий вызов get. Есть ли более чистый способ добиться этого?

1 Ответ

1 голос
/ 11 февраля 2020

TaskSquence следует использовать вместо TaskSet в качестве суперкласса при использовании seq_task

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...