错误分组是蝗虫

时间:2020-07-09 03:59:47

标签: locust

我正在尝试进行一个大型测试,通常会有很多错误,但是似乎错误是单独报告的,而与提供安全名称无关。

What I am getting

这导致了巨大的错误列表,很难分析,而且我怀疑这会占用大量RAM,最终导致进程被杀死。

1 个答案:

答案 0 :(得分:0)

问题是蝗虫从您的请求取回的错误不是正常的状态代码。当前,它检查状态代码以确保它在此列表valid_response_codes = frozenset([200, 206, 301, 302, 303, 307])中。如果不是,则返回BadStatusCode(url, code=status_code)。您的网址似乎是唯一的,并且您已经在编辑正在UI中报告的网址。对于错误,您必须执行类似的操作,或者如果已经存在,则需要扩大范围。

在我的用法中,我还有很多唯一的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以及响应代码和消息进行按摩,以使它们不唯一,然后手动触发失败和成功events

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消息中的UI。

如果您不想手动触发事件,您仍然可以捕获响应,但是您可以覆盖响应的属性并使其继续正常运行,或者可以使用任何字符串调用response.failure(failure_string)想要。