JMeter 脚本 - 根据条件停止所有线程组整个测试

问题描述

我有一个 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 控制器的子节点

enter image description here

如果您想在 Groovy 中执行此操作 - 请采用以下方法之一:

  • prev.setStopTest(true) - 优雅地“请求”线程停止
  • prev.setStopTestNow(true) - 强制“告诉”线程停止(您可能会收到与异常线程中断相关的额外错误)
,

您可以使用 prevstop test

 prev.setStopTestNow(true);

现在停止测试,中断当前运行的采样器

prev - (SampleResult) - 允许访问上一个 SampleResult(如果有)

对于更突然和异常的退出,您可以exit Java 进程

 System.exit(1);