如何通过 404 响应代码的 Jmeter 报告?

how to get pass in Jmeter reports for 404 response codes?

场景:

我正在使用 Jmeter 进行 API 测试。我在那里为 404 添加了一个响应代码断言,即我期待 404。

所以当我期待它时,它应该是绿色的,但它是红色的(200 时显示为绿色)。我该如何解决?

我正在使用 Jmeter 3.x on windows 并且监听器是 JMeter View Results in table

这是预期的行为。

在下图中,第一个请求是 404,响应断言是 404。因此,HTTP 采样器失败,因为它是 404,但断言通过了,如您所见,第一个 HTTP 采样器中没有扩展符号。

在第二个采样器中,它给出了 200,但响应断言是 404。因此,HTTP 采样器因断言而失败。

如果未找到断言,HTTP 采样器将失败,但如果是 404 响应而没有任何额外设置,断言将无法使其变为绿色。

现在,解决这个问题,您可以使用 "Ignore Status" 复选框来传递采样器,即使它是 404,断言也是 404,如下所示:-

您可以使用 JSR223 断言(或任何其他可编程断言或 post-处理器)覆盖采样器结果:

  1. 在响应代码为404时要传递的采样器下添加JSR223断言:

  1. 设置断言,使其在响应代码为404时通过,并且在这种情况下也修改采样器的结果才能成功。在所有其他情况下,将断言设置为失败,并且不修改采样器状态:

    if("404".equals(SampleResult.getResponseCode())) { // Success
        SampleResult.setSuccessful(true); // Change sampler status to success
        AssertionResult.setFailure(false); // Set assertion status to success as well
    } 
    else {
        AssertionResult.setFailure(true); // Set assertion status to failure
    }
    

此代码仅覆盖状态,但是您可以更改 SampleResult and AssertionResult

的任何其他字段

示例:

当响应代码为404时,采样器和断言将成功:

当响应代码为 200 时,采样器最初会成功,但由于断言而失败: