JMeter循环中如何动态为__timeShift函数累加分钟数?
JMeter动态传递计数器值到__timeShift函数的解决方法
直接嵌套变量${counter}无法生效,核心原因是JMeter函数的解析优先级高于变量,导致PT${counter}M没被正确解析为__timeShift能识别的合法ISO8601时长格式,以下是几个可行的解决办法:
用__V()函数解析嵌套变量
通过__V()函数强制先解析counter变量,再传递给__timeShift,写法如下:${__timeShift(HH:mm:ss,,PT${__V(counter)}M,,)}__V()的作用是确保内部的counter变量先被求值,拼接成
PT5M、PT10M这类符合要求的格式,让__timeShift正常识别。在代码中直接生成目标时间
既然你已经在用代码维护counter,不如直接在JS223预处理程序(推荐用Groovy)里生成偏移后的时间,存为变量供后续使用:def counter = vars.get("counter") as int def shiftedTime = new Date(System.currentTimeMillis() + counter * 60 * 1000).format("HH:mm:ss") vars.put("shiftedTime", shiftedTime)之后直接用
${shiftedTime}就能拿到对应时间,完全避开函数嵌套的解析问题。调整计数器输出格式
如果用JMeter自带的计数器元件,直接把计数器的输出格式设为PT${__counter(,)}M(变量名可自定义),然后把这个变量直接传给__timeShift:${__timeShift(HH:mm:ss,,${counterWithFormat},,)}这样计数器生成的变量本身就是合法的时长字符串,__timeShift可以直接识别并使用。
内容的提问来源于stack exchange,提问作者That'llDoPig
相关产品推荐
相关产品推荐

