我对JMeter还是很陌生,我试图使用循环控制器和JSR223后处理器来增加用户定义变量中预定义的计数器变量,但它似乎无法正常工作。我查看了有关JMeter循环的各种示例和计数器示例,以解决此问题,但配置元素Counter也未随循环增加。 有人可以让我知道我在做什么错吗?
这是用户定义的变量计数器:
这是我的循环方式:
这就是我尝试使用后处理器递增计数器的方式,并且日志显示计数器未针对每个循环递增。我想将计数器提高到5:
[编辑] 我猜不清楚我为什么要使用$ {counter}进行测试。我试图将另一个变量内的计数器变量评估为'$ {__ V(transaction _ $ {counter})}',因为这需要附加到文本文件中。例如,如果transaction_3的值为“ 110001”,如果我要附加'$ {__ V(transaction _'+ vars.get('counter')+')}',则存储的文本将显示为“ transaction_3”,如果执行'$ {__ V(transaction _ $ {counter})}',然后我得到存储在文本文件中的正确值“ 110001”,而在下一次迭代中,计数器不递增。有没有可能解决这个问题的方法?
答案 0 :(得分:0)
根据JSR223 Sampler文档:
JMeter在将脚本字段传递给解释器之前先处理函数和变量引用,因此这些引用将只解析一次。脚本文件中的变量和函数引用将逐字传递给解释器,这可能会导致语法错误。为了使用运行时变量,请使用适当的props方法,例如
props.get("START.HMS"); props.put("PROP1","1234");
因此,将脚本的最后一行修改为:
log.info(vars.get('counter'))
演示:
另外请注意,它更容易使用:
${__jm__Loop Controller__idx}
JMeter变量,该变量保存当前的迭代编号答案 1 :(得分:0)
根据《 JMeter手册最佳做法》-> 16.12 JSR223 Elements
使用JSR 223元素时,建议检查Cache编译脚本是否具有可用属性,以确保在基础语言支持的情况下缓存脚本编译。在这种情况下,请确保脚本不使用
的第一个值。${varName}
使用任何变量,因为缓存将仅使用${varName}. Instead use:
vars.get(“ varName”)`
如果将log.info('${counter}')
更改为log.info('${vars.get("counter")}')
,应该可以解决问题!
或取消选中此选项: