我正在尝试运行一个大型测试,它通常有很多错误,但似乎无论是否提供安全名称,错误都是单独报告的。
这导致了很难分析的巨大错误列表,而且我怀疑这会消耗大量RAM,进程最终会被杀死。
发布于 2020-08-22 02:31:30
问题是,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、响应码和消息转换为非唯一的,然后手动触发失败和成功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响应中获得相同的数据(而且我相信会更干净)。在本例中,在您看到BadStatus消息的UI中将显示except_string。
如果您不想手动触发事件,您仍然可以捕获响应,但您可以覆盖响应的属性并让其继续正常运行,或者您可以使用所需的任何字符串调用response.failure(failure_string)。
https://stackoverflow.com/questions/62807204
复制相似问题