【问题标题】:why my while loop doesn't work in Jmeter?为什么我的while循环在Jmeter中不起作用?
【发布时间】:2022-01-03 23:40:39
【问题描述】:

请点击链接查看图片。

I have a Json Extractor, which saves the value returned in "status"

it's working:

and I also have a "Controller while" with this condition:

$ {__ javaScript ("${status}".indexOf ("string") != 500 ,)}

但是发生了一些奇怪的事情

2021-11-25 14:30:46,258 调试 oajcWhileController:条件字符串:'$ {__ javaScript ("ERROR".indexOf ("string") != 500 ,)}' 2021-11-25 14:30:46,258 DEBUG o.a.j.c.WhileController:条件值:'false' 2021-11-25 14:30:46,258 DEBUG o.a.j.t.p.AbstractProperty:运行版本,执行函数

不应该给出“真”并结束循环吗?

【问题讨论】:

标签: javascript loops while-loop jmeter jmeter-5.0


【解决方案1】:

您的条件不是很正确,如果您想在 ${status} 变量变为 500 时结束循环,您应该使用类似:

${__javaScript("${status}" != "500",)}

另外,从性能角度来看,最好考虑使用__jexl3() function,例如:

${__jexl3("${status}" != "500",)}

__groovy() function 喜欢:

${__groovy(vars.get("status") != "500",)}

因为这是 __javaScript() function documentation 建议的事情

【讨论】:

  • 我已经这样做了: ${__javaScript("${status}" == "500",)} 在这里发布后,因为我看到我应该将字符串放在引号中,也因为我希望它在 ==500 时运行并在它不同时停止但我的这段代码甚至不执行请求
  • 当 JMeter 检查它是否应该进入 While 控制器时,它会评估条件并给出您的 status 变量尚未定义 JMeter 将 ${status}500 进行比较,因为它确实给出了 false它不会进入 While 控制器。为了使您当前的实现正常工作,您需要在 While 循环之前以某种方式为 status 变量提供 500 的值,例如,您可以使用 User Defined Variables
  • 哇,非常感谢你。你帮了我很多。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-26
  • 2022-12-12
  • 1970-01-01
  • 2020-04-04
  • 1970-01-01
  • 2020-01-08
相关资源
最近更新 更多