问题描述
我有一个 JMeter 脚本,其中包含多个并发运行的线程组。在一个线程组 PostProcessor
中,我想检查条件并停止 ALL 线程组,然后退出。基本上,我想停止整个测试。
if (Integer.valueOf(prev.getResponseCode()) >= 400) {
// Stop the entire test in the next line.
}
如何在 JMeter 脚本中一次停止所有线程组?
请看:
- 我的 JMeter 版本:5.3
- Groovy 版本:3.0.3
解决方法
JMeter 自动将状态代码高于 400 的 HTTP Request 采样器视为失败,因此您不必编写脚本,您可以使用 If Controller 使用以下条件停止测试:
${__jexl3("${JMeterThread.last_sample_ok}"=="false",)}
并添加 Flow Control Action 采样器作为 If 控制器的子节点
如果您想在 Groovy 中执行此操作 - 请采用以下方法之一:
-
prev.setStopTest(true)
- 优雅地“请求”线程停止 -
prev.setStopTestNow(true)
- 强制“告诉”线程停止(您可能会收到与异常线程中断相关的额外错误)
prev.setStopTestNow(true);
现在停止测试,中断当前运行的采样器
prev - (SampleResult) - 允许访问上一个 SampleResult(如果有)
对于更突然和异常的退出,您可以exit Java 进程
System.exit(1);