【问题标题】:JMeter - Stop thread after error, but allow retriesJMeter - 出错后停止线程,但允许重试
【发布时间】:2021-03-03 17:02:53
【问题描述】:

我有一个 JMeter 脚本,它向 5 个不同的端点发出请求。如果出现错误,则应停止该线程。

但是,我想在停止线程之前重试对第三个端点的请求 3 次。

这是我的脚本的样子:

  • 线程组(选择了停止线程
    • HTTP 请求(第一个端点)
    • HTTP 请求(第二个端点)
    • 事务控制器
      • 当控制器
        • HTTP 请求(第三个端点)
          • JSR223 PostProcessor(将响应代码保存在变量中以供 while 控制器检查)
        • 计数器(用于跟踪重试次数)
      • JSR223 断言(将结果设置为成功,因此第一次失败的重试不计算在内)
    • HTTP 请求(第四个端点)
    • HTTP 请求(第 5 个端点)

由于我勾选了线程组下的停止线程选项,如果对第三个端点的第一次请求失败,线程将停止并且不会重试。

如果我选中继续,则对第三个端点的重试将按预期工作,但如果对其他端点的请求失败,则线程不会停止。

我还尝试将以下 Groovy 脚本添加到 JSR223 PostProcessor,但没有成功:

if (prev.isStopThread()) {
    prev.setStopThread(false)
}

如果能得到任何帮助,我将不胜感激。

谢谢!

【问题讨论】:

    标签: jmeter jmeter-5.0


    【解决方案1】:

    只需在Thread Group 中将“采样器错误后采取的操作”设置为Continue,以防止线程停止。

    如果您决定停止线程,您可以通过 2 种方式来完成:

    1. 通过Flow Control Action Sampler(结合If Controller

    2. 通过您的任何 JSR223 测试元素作为

      prev.setStopThread(true)
      

    您甚至不需要计数器,因为 JMeter 5.0 而 Controller 通过 __jm__While Controller__idx 预定义变量公开当前迭代

    【讨论】:

    • 所以我应该在每次请求后都这样做(第三个请求除外),对吧?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-18
    • 2015-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多