首页 > 解决方案 > JMETER - 如何在 Jmeter 的 while 循环中传递 2 个条件

问题描述

如何在 Jmeter 的 while 循环中传递 2 个条件。条件是

  1. 请求应该循环运行,直到“通过”响应到来。
  2. While 循环应该只运行 1 分钟。

条件 1 工作正常。但是条件2无法实现。

我尝试在运行时控制器中运行 While 循环。但问题是,如果响应“通过”在 1 分钟之前出现,则其余的测试将停止。尝试其他方式(运行时在 While 循环中)导致请求的多次执行,即使在收到“通过”响应之后也是如此。

将不胜感激这方面的任何线索。谢谢

标签: jmeterjmeter-plugins

解决方案


  1. 在 While 控制器之前添加一个JSR223 采样器,并使用以下代码将当前时间存储到JMeter 变量中:

    SampleResult.setIgnore()
    vars.putObject('whileLoopStart', System.currentTimeMillis())
    
  2. 使用以下__groovy() 函数作为 While 控制器的条件:

    ${__groovy(!vars.get('your_variable').equals('Pass') && ((System.currentTimeMillis() - vars.getObject('whileLoopStart')) < 60000),)}
    

这样,While 控制器将运行到:

  • 要么your_variable不等于Pass
  • 或 60 秒过去
  • 先到先得

有关 JMeter 中 Groovy 脚本的更多信息:Apache Groovy - 为什么以及如何使用它


推荐阅读