gpt4 book ai didi

jmeter - 有没有办法检查某个断言是否失败

转载 作者:行者123 更新时间:2023-12-04 18:43:22 30 4
gpt4 key购买 nike

我有一个带有响应和持续时间断言的 HTTP 请求采样器。现在,当响应断言失败时,不允许运行下一个 HTTP 请求采样器。只有当持续时间断言失败时,才允许运行下一个 HTTP 请求采样器。

我开始用 IF Controller 做这件事并检查 ${JMeterThread.last_sample_ok}但那是,当我只有响应断言到位时。添加持续时间断言和新要求时,这不再适用。

我已经尝试过 BeanShell 后处理器在持续时间断言失败时添加某些变量。但是当持续时间断言失败时,以下代码总是给我返回和空数组事件。

BeanShell 后处理器代码:

import org.apache.jmeter.assertions.AssertionResult;

AssertionResult[] results = prev.getAssertionResults();

if (results.length == 0) {
vars.put("assertions_have_zero_length", "true");
}

//debug post processor shows the above variable.

我还尝试使用 BeanShell 监听器,这确实给了我两个断言,但是在创建(放置)某些变量时,它们不会显示在调试后处理器中。

BeanShell 监听器代码:
import org.apache.jmeter.assertions.AssertionResult;

AssertionResult[] results = sampleResult.getAssertionResults();

System.out.println("Current counter value = " + results.length);

if (results.length == 0) {
vars.put("assertions_have_zero_length", "true");
} else {
vars.put("assertions_have_zero_length", "false");
}

//no assertion_have_zero_length variable shown in debug post processor.

我做错了什么,甚至可能是我想要的吗?

提前致谢。

最佳答案

我设法让它与 BeanShell Listener 一起工作.由于 execution order,我第一次尝试用 BeanShell 后处理器来做这件事是不可能的。 .后处理器在断言之前运行。这也是为什么Debug Post Processor没有显示在 BeanShell 监听器中创建的变量。

所以我的BeanShell Listener的代码如下:

import org.apache.jmeter.assertions.AssertionResult;

AssertionResult[] results = sampleResult.getAssertionResults();

boolean skipPostAssertionConsumerService = false;

for(int i =0; i<results.length; i++) {

AssertionResult result = results[i];

boolean isResponseAssertion = result.getName().equals("Response Assertion - Is Not Authentication Failed");
boolean resultHasFailed = result.isFailure() || result.isError();

if(isResponseAssertion && resultHasFailed) {
skipPostAssertionConsumerService = true;
break;
}
}

vars.put("do_post_assertion_consumer_service_url", (!skipPostAssertionConsumerService).toString());

而在我的 IF Controller我设置了以下条件:
${do_post_assertion_consumer_service_url}

关于jmeter - 有没有办法检查某个断言是否失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19724023/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com