JMeter多组变量对比仅前两组生效的问题求助
JMeter多组变量对比验证问题解决
你当前的代码核心问题是每次直接覆盖Failure和FailureMessage变量,导致只有最后一组验证的结果会生效:
- 如果前面的组验证失败,但后面的组验证成功,
Failure会被从true改为false,丢失之前的失败状态 FailureMessage每次都会被替换,最终只能看到最后一次验证的信息
修正方案(基础版)
通过累积失败状态和信息,确保所有组的验证都执行并记录:
// 初始化失败状态和失败信息容器 Failure = false def failureLog = new StringBuilder() // 第一组变量验证 String episodeTypeId = vars.get("episodeTypeId") String aptidetid_2 = vars.get("aptidetid_2") if (!episodeTypeId.equals(aptidetid_2)) { Failure = true failureLog.append("episodeTypeId与aptidetid_2不相等:预期\"${episodeTypeId}\",实际\"${aptidetid_2}\"\n") } // 第二组变量验证 String duration = vars.get("duration") String aptduration_1 = vars.get("aptduration_1") if (!duration.equals(aptduration_1)) { Failure = true failureLog.append("duration与aptduration_1不相等:预期\"${duration}\",实际\"${aptduration_1}\"\n") } // 可继续添加更多组验证... // 将所有失败信息赋值给FailureMessage FailureMessage = failureLog.toString().trim()
优化版(封装方法减少重复代码)
如果需要验证大量变量组,可封装验证逻辑,简化代码:
Failure = false def failureLog = new StringBuilder() // 封装变量验证方法 void checkVariablePair(String var1Name, String var2Name) { String val1 = vars.get(var1Name) String val2 = vars.get(var2Name) if (!val1.equals(val2)) { Failure = true failureLog.append("${var1Name}与${var2Name}不相等:预期\"${val1}\",实际\"${val2}\"\n") } } // 批量验证各组变量 checkVariablePair("episodeTypeId", "aptidetid_2") checkVariablePair("duration", "aptduration_1") // 添加更多组只需调用方法:checkVariablePair("var5", "var6") FailureMessage = failureLog.toString().trim()
效果说明
- 所有组的验证都会完整执行,不会因前面的结果中断
- 只要有任意一组验证失败,
Failure就会保持为true - 所有失败的验证信息会被累积到
FailureMessage中,方便一次性查看所有问题
内容的提问来源于stack exchange,提问作者Madhu Manohar
相关产品推荐
相关产品推荐

