【问题标题】:How to abort processing a sampler when a pre-processor execution is failed?预处理器执行失败时如何中止处理采样器?
【发布时间】:2021-07-26 17:13:33
【问题描述】:

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

场景:

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

我已经尝试在 JSR223 预处理器的 try-catch 块中进行跟踪。

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

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

【问题讨论】:

    标签: jmeter jmeter-5.0


    【解决方案1】:

    正确的函数是:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-31
      相关资源
      最近更新 更多