首页 > 解决方案 > 错误分组是蝗虫

问题描述

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

我得到了什么

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

标签: locust

解决方案


问题是蝗虫从您的请求中返回的错误不是正常的状态代码。目前,它会检查状态码以确保它在此列表中valid_response_codes = frozenset([200, 206, 301, 302, 303, 307])。如果不是,则返回BadStatusCode(url, code=status_code). 看起来您的 URL 是唯一的,并且您已经在编辑 UI 中报告的 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消息的 UI 中。

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


推荐阅读