JMeter:如何配置If Controller判断HTTP请求返回的预期参数值?
JMeter If Controller 不触发问题解决办法
你的表达式问题分析
你试的三个写法都有问题,导致If Controller永远不会触发:
- 第一个表达式直接把JSON字符串和
'1'做对比,逻辑完全错误,肯定不成立 - 第二个表达式直接对比两个JSON格式的字符串,JMeter默认不会按内容判断相等,这种写法永远返回false
- 第三个表达式用引号把变量包起来了,JMeter会把
"{Param_S07_Teamboard}"当成字面量字符串,而不是去解析变量的实际值,自然和"3"不相等
正确的表达式写法
直接用变量和目标值比较,不要加多余的引号:
${Param_S07_Teamboard} == "3"
如果担心类型问题(比如变量是数字类型),可以用JMeter的函数确保判断准确:
用JEXL3函数:
${__jexl3(${Param_S07_Teamboard} == 3,)}
或者Groovy函数(推荐,性能更好):
${__groovy(vars.get("Param_S07_Teamboard") == "3",)}
额外要检查的点
- 先确认
Param_S07_Teamboard变量是否真的从HTTP请求结果里提取到了值:打开查看结果树,切换到变量查看器标签,看看这个变量的实际值是不是"3" - 检查If Controller的配置:JMeter 5.0及以上版本默认会解析变量表达式,但如果是旧版本,要确保勾选了
Interpret Condition as Variable Expression?选项 - 如果变量值可能带空格或特殊字符,先做trim处理:
${__groovy(vars.get("Param_S07_Teamboard").trim() == "3",)}
内容的提问来源于stack exchange,提问作者Jorge Silva
相关产品推荐
相关产品推荐

