7

我使用 Locust ( http://locust.io ) 编写了一个简单的负载测试。

现在我注意到有时(使用更高的负载)我从 post call 得到的响应有一个 status_code 为 0 和一个None内容。0 状态码在 Locust 中不会自动识别为失败,所以我必须手动测试它。

我的代码片段是这样的:

with self.client.get(path, catch_response=True) as response:
    if response.status_code != 200:
        response.failure(path + ": returned " + str(response.status_code))
    elif check not in response.content:
        response.failure(path + ": wrong response, missing '" + check + "'")

注意:check是预期响应内容的一部分的变量。

问题是:这是预期的行为吗?这是 Locust(或 Python)的问题,还是测试应用程序中的错误?

4

1 回答 1

10

来自蝗虫文档:http ://docs.locust.io/en/latest/writing-a-locustfile.html

安全模式

HTTP 客户端配置为在安全模式下运行。它的作用是任何由于连接错误、超时或类似情况而失败的请求都不会引发异常,而是返回一个空的虚拟响应对象。该请求将在 Locust 的统计信息中报告为失败。返回的 dummy Response 的 content 属性将设置为 None,它的 status_code 将为 0。

看起来服务器无法处理您蜂拥而至的所有请求,其中一些请求超时。

于 2013-06-27T00:11:36.640 回答