预处理器执行失败时如何中止采样器的处理?

时间:2021-07-26 17:13:33

标签: jmeter jmeter-5.0

当任何预处理器执行失败时,有没有办法中止处理采样器(HTTP 请求)?

场景:

  • 有一个与 HTTP 请求相关联的 JSR223 预处理器
  • JSON 负载(请求正文)是在 JSR223 预处理器中动态创建的。
  • 有时未成功创建 JSON 负载。
  • 如果未成功创建 JSON 负载,则不应发送 HTTP 请求。

我曾尝试在 JSR223 预处理器的 try-catch 块中执行以下操作。

try {
    //JSON playload creating script 
}catch(anything){
    ctx.setRestartNextLoop(true);
}

这不会中止当前采样器的执行。 在采样器之外处理 JSON 负载可能不是一个优雅的解决方案。

1 个答案:

答案 0 :(得分:2)

正确的函数是:

ctx.setTestLogicalAction(org.apache.jmeter.threads.JMeterContext.TestLogicalAction.START_NEXT_ITERATION_OF_CURRENT_LOOP)

但是它不会阻止当前采样器的执行,它不会运行下一个采样器,因此在上一个请求的 JSR223 PostProcessor 中生成请求正文是有意义的< /p>

一个更易读、更容易被同事理解的解决方案是在 JSR223 Sampler 中生成正文并通过 If Controller 有条件地运行 HTTP 请求采样器