为什么我在JMeter中配置的While循环无法正常运行?
问题原因
- 逻辑方向错误:JMeter While Controller的运行规则为条件返回
true时继续循环,返回false时终止循环。你预期条件返回true就结束循环,和控制器本身的运行逻辑完全相反。 - 函数语法错误:你写的
__javaScript函数存在多处语法问题,直接导致函数执行异常返回false:- 变量引用、函数名前后有多余空格:
$ {__ javaScript中${与__javaScript都不能加空格,空格会导致JMeter无法正确识别函数 - 函数末尾多了多余的逗号,触发JavaScript语法解析失败
"${status}". indexOf中.与indexOf之间的多余空格也会导致语法错误
- 变量引用、函数名前后有多余空格:
- 判断逻辑不符合需求:你需要判断的是
status字段值不等于500,但你使用indexOf("string")的逻辑和需求完全无关。从日志可以看到你提取到的status值实际为ERROR,在ERROR中查找string子串永远返回-1,该判断逻辑没有实际意义。
修复参考
如果要实现「当status不等于500时终止循环」的需求,正确的条件写法如下:${__javaScript("${status}" != "500")}
如果要实现「当status等于500时继续循环,否则终止循环」的需求,写法为:${__javaScript("${status}" == "500")}
内容的提问来源于stack exchange,提问作者QA_V
相关产品推荐
相关产品推荐

