Группировка ошибок - Locust - PullRequest
0 голосов
/ 09 июля 2020

Я пытаюсь запустить большой тест, который обычно содержит много ошибок, но, кажется, сообщения об ошибках сообщаются индивидуально, независимо от предоставления безопасного имени.

Это вызывает огромный список ошибок, который трудно анализировать, также я подозреваю, что это съедает много оперативной памяти и в конечном итоге процесс останавливается.

1 Ответ

0 голосов
/ 21 августа 2020

Проблема в том, что ошибка, которую Locust возвращает по вашим запросам, не является нормальным кодом состояния. В настоящее время он проверяет код состояния, чтобы убедиться, что он в этом списке valid_response_codes = frozenset([200, 206, 301, 302, 303, 307]). Если это не так, возвращается BadStatusCode(url, code=status_code). Похоже, что ваши URL-адреса уникальны, и вы уже редактируете URL-адрес, о котором сообщается в пользовательском интерфейсе. Вам придется сделать что-то подобное для ошибок, или, если вы уже сделали это, вам нужно расширить область действия.

В моем использовании у меня также есть много уникальных URL-адресов. Чтобы этого не происходило, я улавливаю ответ следующим образом:

with fast_http_session.request(method, url, catch_response=True, stream=False, **kwargs) as response:
    …
    # Code to check and report response
    …
    response._manual_result = False
    return response

Затем в моем коде, чтобы проверить и сообщить об ответе, я массирую URL-адрес и коды ответа и сообщения, чтобы они не были уникальный, а затем срабатывает сбой и успех события вручную:

env.events.request_failure.fire(request_type=response.locust_request_meta["method"], name=response.locust_request_meta["name"], exception=except_string, response_time=response.locust_request_meta["response_time"], response_length=response.locust_request_meta["content_size"])

Я использую FastHttpSession, для которого требуется материал locust_request_meta, но вы можете получить те же данные (и я считаю, что более аккуратно ) из ответов HttpSession, если вы это используете. В этом случае except_string - это то, что будет отображаться в пользовательском интерфейсе, где вы видите сообщения BadStatus.

Если вы не хотите запускать события вручную, вы все равно поймаете ответ но вы можете либо перезаписать атрибуты ответа и позволить ему продолжаться как обычно, либо вы можете вызвать response.failure(failure_string) с любой строкой, какой захотите.

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