Jmeter - while循环条件不会退出

时间:2017-08-30 12:58:12

标签: javascript while-loop jmeter

尝试在脚本中构建一个小循环控件以防止它无限循环(因为不幸的是,这在SUT中是一种严重的可能性)

我有两件我感兴趣的事情:
州 - '完成'是理想的状态
loopcount - 它不应该超过10个循环来完成

我正在检索状态'从JSON提取器成功并定义了' loopcount'作为While控制器中的Counter元素。 两者都成功检索了相关信息。

我遇到的问题是我在while控制器中的javascript条件,它不断循环。这是我的代码:

${__javaScript("${state}"!="COMPLETE"||"${loopcounter}" < 10),)}

我希望它在state = Complete或loopcounter超过10个循环时退出循环。

我到底做错了什么?

3 个答案:

答案 0 :(得分:1)

  1. 在JavaScript tomee中区分大小写,因此CompleteCOMPLETE是不同的野兽
  2. ${loopcounter}变量
  3. 周围不需要引号
  4. 我还认为您应该使用||运算符
  5. 替换&&运算符

    所以修改你的表达式看起来像:

     ${__javaScript(("${state}"!="Complete" && ${loopcounter} < 5),)}
    

    有关详细信息,请参阅strings文章。

答案 1 :(得分:0)

两个问题:

  • loopCounter不应转换为字符串。所以删除它周围的双引号
  • 您需要一个逻辑AND运算符,而不是OR

这应该这样做:

"${state}" != "COMPLETE" && ${loopcounter} < 10

答案 2 :(得分:0)

要防止无限循环,您可以在Runtime Controller下添加并写入最大秒数。

您可以在While Controller中查看一个部分  作为${__javaScript(${loopcounter} < 10),)}

并在循环中添加If Controller,并将if的一部分检查为${__javaScript("${state}"!="COMPLETE")}和 1.添加Test Action以停止线程 2.设置loopcounter超过10并添加Test Action以进入下一个循环迭代,并使其失败循环