JMeter中Counter引用变量自增1的实现及Json Extractor适配求助
解决JMeter Json Extractor中动态设置Match No为Counter变量+1的问题
遇到这种直接在Match No里写${loopCount}+1不生效的情况很正常,因为JMeter会把这个当成字符串处理,而不是计算表达式。这里有两个简单可行的解决办法:
方法1:使用JMeter内置的__intSum函数直接计算
JMeter自带的__intSum函数可以直接完成整数加法运算,你只需要在Json Extractor的Match No输入框中填入:
${__intSum(${loopCount},1,)}
- 第一个参数
${loopCount}是你的Counter变量 - 第二个参数
1是要加的数值 - 第三个空参数是可选的,用来把计算结果存到新变量里(如果不需要单独存可以留空)
这样每次运行时,函数会自动计算loopCount + 1的结果,并作为Match No的数值传入。
方法2:用JSR223 PreProcessor自定义计算逻辑
如果之后需要更复杂的逻辑(比如判断数值范围、多变量运算),可以用JSR223 PreProcessor来处理:
- 在你的目标取样器前面添加一个JSR223 PreProcessor
- 在PreProcessor的Script输入框中写入Groovy代码:
// 获取Counter变量并转为整数 def currentLoop = vars.get("loopCount") as int // 计算目标Match No def targetMatchNo = currentLoop + 1 // 将结果存入新变量matchNo vars.put("matchNo", targetMatchNo.toString())
- 回到Json Extractor的Match No输入框,填入
${matchNo}即可
这个方法的优势是扩展性强,后续如果有其他逻辑调整,直接修改脚本就行。
内容的提问来源于stack exchange,提问作者a4aravind
相关产品推荐
相关产品推荐

