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

JMeter Scripts - Stop All Thread Groups (Entire Test) based on a condition

我有一个包含多个线程组的 JMeter 脚本,这些线程组同时 运行。在一个线程组 PostProcessor 中,我想检查一个条件并停止 ALL 线程组,然后退出。基本上,我想停止整个测试。

if (Integer.valueOf(prev.getResponseCode()) >= 400) {
    // Stop the entire test in the next line.   
}

如何在 JMeter 脚本中一次停止所有线程组?

请看:

您可以使用prev to stop test

 prev.setStopTestNow(true);

stop the test now interrupting current running samplers

prev - (SampleResult) - gives access to the previous SampleResult (if any)

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

 System.exit(1);

JMeter 使用以下条件自动处理 HTTP Request samplers with status codes above 400 as failed so you don't have to go for scripting, you can stop the test using If Controller

${__jexl3("${JMeterThread.last_sample_ok}"=="false",)}

并添加 Flow Control Action 采样器作为 If 控制器的子项

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

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