在JMETER中设置While循环的持续时间

时间:2018-07-31 21:27:44

标签: jmeter

我试图在45秒后停止while循环。此while循环在5秒间隔内有JDBC请求。 我不希望while循环永远运行。

现在我正在使用这种条件:

${__javaScript("${order_status_cd_1}" != "3" && "${TESTSTART.MS}" < "6",)}

但是它不起作用。

3 个答案:

答案 0 :(得分:0)

在while循环之前将Beanshell Sampler添加到脚本中并设置TestStopTime。 您只需要使用TESTSTART.MS变量获取teststart时间,并向其添加45000毫秒即可在45秒后停止,如下所示。 enter image description here

您可以使用$ __ time()函数获取当前时间戳,可以使用此函数进行比较 while循环中的条件是[IF(currentTime<=TeststopTime)]

${__javaScript(( ${__time(,)} <=${TestStopTime}), )}

您可以在结果测试中看到完全在45秒后停止(在屏幕截图中突出显示)

enter image description here

有关while循环的更多信息,请read this article

答案 1 :(得分:0)

Rohit 答案的简单版本。

  • BeanShell 采样器
vars.put("LOOPSTART", System.currentTimeMillis().toString());
  • 当控制器
${__javaScript((${__time()} - ${LOOPSTART}) <= 45000 )}

注意:${__time()} 不能在 BeanShell Sampler 中使用。 https://stackoverflow.com/a/55275878/12895553

答案 2 :(得分:-1)

  1. 在While控制器下添加一个Counter测试元素,并按以下方式进行配置:

    • 增量:1
    • 参考名称:任何有意义的数字,例如counter
  2. 将While控制器的条件修改为

    ${__javaScript("${order_status_cd_1}" != "3" && ${counter} < 8,)}
    

    这样,您的JDBC请求将被执行不超过9次,假设请求之间的持续时间为5秒,而Controller的总持续时间为45秒(加上运行请求本身的时间)


请注意:

  1. Starting from JMeter 3.1 it is recommended to switch to JSR223 Test Elements and __groovy() function用于脚本编写,因此请考虑从__javaScript迁移到__groovy()。主要原因是Groovy performance is much better compared to other scripting options
  2. 设置JMeter测试元素允许运行多长时间的更简单方法是将它们放在Runtime Controller之下