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



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

场景:

  • 有一个与HTTP请求相关联的JSR223预处理器
  • JSON有效负载(请求体)在JSR223预处理器内部动态创建。
  • JSON有效负载在某些时候没有成功创建。
  • 当JSON有效负载未成功创建时,不应该发送HTTP请求。

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

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

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

正确的函数是:

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

但是它不会阻止当前采样器的执行,它不会运行下一个采样器所以在前一个请求的JSR223 PostProcessor中生成请求体是有意义的

一个更容易理解的解决方案是在JSR223采样器中生成主体,并通过If控制器有条件地运行HTTP请求采样器

最新更新