如果先前示例的响应在失败后更改为 OK,如何跳过 JMeter 上的 if 控制器?
How to skip an if controller on JMeter if previous sample's response is changed to OK after failure?
我正在运行进行 JMeter beanshell 采样器测试,之后我有一个 if 控制器,如果最后一个 JMeter 样本没问题,它应该 运行。
我有这个工作,但是,我必须确保如果第一次测试失败,它需要更改为通过但不会继续到 if 控制器。
我尝试在测试的响应断言中勾选忽略状态复选框,并添加一个 BeanShell 后处理器,将先前的测试响应更改为 OK。这些不是选项,因为它会导致继续使用 if 控制器。
所以:
- 如果测试通过继续到如果控制器 - 完成
- 如果测试失败,更改为通过,但如果控制器
则跳过
关于如何完成此任务有什么建议吗?
谢谢
您可以定义一个单独的变量来控制 if 控制器,或者在评估 if 控制器的条件后将变量从失败更改为通过。
我建议您按如下方式设计测试:
添加 Counter 配置元素并配置如下:
- 开始:
1
- 增量:
1
- 参考名称:
N
添加一个 Beanshell 后处理器作为第一个测试的子项,并将下一个代码放入它的 "Script" 区域
int test = Integer.parseInt(vars.get("N"));
if (test == 1 && !prev.isSuccessful()) {
prev.setSuccessful(true);
}
在第一次测试后添加 If Controller 并使用以下条件:
${JMeterThread.last_sample_ok} && "${N}" != 1
所以
- 计数器将保存当前测试编号并将其存储到 JMeter 变量中
N
- 如果 "first" 和 "failed"
,Beanshell PostProcessor 会将您的测试标记为成功
如果满足以下条件,控制器将执行嵌套采样器:
- 上次测试成功
- 上次测试不是"first"
有关 JMeter 采样器的正确条件执行的详细信息,请参阅 How to use JMeter's 'IF' Controller and get Pie 指南。
我正在运行进行 JMeter beanshell 采样器测试,之后我有一个 if 控制器,如果最后一个 JMeter 样本没问题,它应该 运行。
我有这个工作,但是,我必须确保如果第一次测试失败,它需要更改为通过但不会继续到 if 控制器。
我尝试在测试的响应断言中勾选忽略状态复选框,并添加一个 BeanShell 后处理器,将先前的测试响应更改为 OK。这些不是选项,因为它会导致继续使用 if 控制器。
所以: - 如果测试通过继续到如果控制器 - 完成 - 如果测试失败,更改为通过,但如果控制器
则跳过关于如何完成此任务有什么建议吗?
谢谢
您可以定义一个单独的变量来控制 if 控制器,或者在评估 if 控制器的条件后将变量从失败更改为通过。
我建议您按如下方式设计测试:
添加 Counter 配置元素并配置如下:
- 开始:
1
- 增量:
1
- 参考名称:
N
- 开始:
添加一个 Beanshell 后处理器作为第一个测试的子项,并将下一个代码放入它的 "Script" 区域
int test = Integer.parseInt(vars.get("N")); if (test == 1 && !prev.isSuccessful()) { prev.setSuccessful(true); }
在第一次测试后添加 If Controller 并使用以下条件:
${JMeterThread.last_sample_ok} && "${N}" != 1
所以
- 计数器将保存当前测试编号并将其存储到 JMeter 变量中
N
- 如果 "first" 和 "failed" ,Beanshell PostProcessor 会将您的测试标记为成功
如果满足以下条件,控制器将执行嵌套采样器:
- 上次测试成功
- 上次测试不是"first"
有关 JMeter 采样器的正确条件执行的详细信息,请参阅 How to use JMeter's 'IF' Controller and get Pie 指南。