我正在尝试进行一个大型测试,通常会有很多错误,但是似乎错误是单独报告的,而与提供安全名称无关。
这导致了巨大的错误列表,很难分析,而且我怀疑这会占用大量RAM,最终导致进程被杀死。
答案 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)
想要。