JMeter持续时间断言覆盖响应代码

时间:2016-09-22 16:12:36

标签: javascript apache jmeter stress-testing http-response-codes

我有一个JMeter测试计划,每秒多次执行1个HTTP请求。作为参数,我对测试执行的每个请求都有一定的超时。为此,我添加了"持续时间断言"采样器/监听器/ IDK ^^

现在我正在运行测试,我总是得到响应代码200,因为请求没问题,但超出了持续时间断言。这导致在结果树中有成功和失败的请求,但它们都具有状态代码200.问题在于每秒响应代码中的#34;监听器显示所有请求都正常并且响应代码为200.但由于持续时间断言它们不正常!

我的问题:我想覆盖由于持续时间断言而失败的那些请求的状态代码。我希望它们在"每秒响应代码中显示为不同的响应代码(但仅在它们超过持续时间的情况下)。听众,因为我无法区分他们。 或者有什么方法可以让它们在超时时失败?

我真的很抱歉我的英语,我希望你能理解我的问题。非常感谢!

1 个答案:

答案 0 :(得分:2)

我不知道任何允许更改响应代码的测试元素,但您可以通过脚本执行以下操作:

  1. Beanshell Assertion添加为您要失败的请求的子项。 Beanshell断言应该 持续时间断言

  2. 将以下代码添加到"脚本"面积:

    import org.apache.jmeter.assertions.AssertionResult;
    
    AssertionResult[] results = prev.getAssertionResults();
    for (AssertionResult result : results) {
        if (result.isFailure()) {
            if (result.getFailureMessage().contains("The operation lasted too long")) {
                SampleResult.setResponseCode("1000");
            }
        }
    }
    

    Beanshell Assertion Change Response Code

  3. 有关通过断言有条件地传递/失败JMeter采样器的更多信息,请参阅How to Use JMeter Assertions in Three Easy Steps