【问题标题】:JMeter - Pause the request if it gives an errorJMeter - 如果出现错误则暂停请求
【发布时间】:2021-11-18 15:26:19
【问题描述】:

我正在使用 Apache JMeter 发送数千个 HTTP 请求,中间有 3 秒的延迟。响应正文是 json,以 {"errors":[ ], ...} 开头。如果有错误,它将在 [ ] 中。如果没有错误,则 [ ] 将为空。

如果 JMeter 收到错误,我希望它暂停一小段时间,然后重试请求。这样它会在需要时添加额外的缓冲区。

我需要为此编写脚本吗?我怎样才能做到这一点?

【问题讨论】:

    标签: jmeter httprequest


    【解决方案1】:

    您可以通过将JSON JMESPath Extractor 添加为返回 JSON 的采样器的子级并进行如下配置来获取错误数:

    它将提取errorsJSON Array中的条目数并将其存储到errorsJMeter Variable

    然后你可以使用If Controller来检查错误数量是否大于零,可以使用__jexl3() function来完成,比如:

    ${__jexl3(${errors} > 0,)}
    

    最后你可以使用Flow Control Action采样器引入延迟:

    【讨论】:

      【解决方案2】:

      解决方案 1

      根据您的要求将JSR223 Post Processor 添加到测试计划级别、线程组或采样器。

      将以下代码添加到脚本区域以检查错误并在错误后引入延迟(如果有)。

      int delayOnErrorInMillis = 5000
      
      if (prev.getResponseDataAsString().startsWith('{"errors":')){
          log.info("ERROR !")
          sleep(delayOnErrorInMillis)
      }
      
      

      【讨论】:

      • 嗨。我尝试了您的解决方案,但没有奏效。我正在使用 CSV 数据集配置、HTTP 请求、将​​响应保存到文件和查看结果树。我应该在哪里添加所有 JSR223 后处理器?感谢您的帮助。
      • 您需要将 JSR223 后处理器添加到 HTTP 请求中
      猜你喜欢
      • 2022-07-21
      • 1970-01-01
      • 1970-01-01
      • 2016-03-30
      • 1970-01-01
      • 2015-09-14
      • 2022-01-02
      • 2020-03-08
      • 2014-11-26
      相关资源
      最近更新 更多