我正在测试需要每15分钟生成令牌ID的Web应用程序。
我在bean shell采样器的以下两个变量中分配了当前时间和当前时间+ 15分钟,这将为各个变量分配以毫秒为单位的日期时间。
String StartTime =“ $ {__ timeShift(,,,,)}”; String EndTime =“ $ {__ timeShift(,, PT15M ,,}}”;
现在,我想比较IF控制器中的时间差。如果时间差为15分钟(900000 ms),则IF控制器应执行以生成令牌ID。
我在不起作用的IF控制器中使用了如下所示的__eval函数。
${__eval(${EndTime})} - ${__eval(${StartTime})} >= 900000
答案 0 :(得分:0)
答案 1 :(得分:0)
您违反了JMeter最佳做法,即:
在documentation clearly states期间在If控制器中使用JavaScript:
为了提高性能,建议检查
Interpret Condition as Variable Expression
并使用__jexl3
或__groovy
评估为true或false或包含true或false的变量。${JMeterThread.last_sample_ok}
可用于测试最后一个采样器是否成功
vars
速记在哪里设置相关的JMeter变量。 假设以上所有条件
切换到JSR223 Sampler并使用以下代码:
def StartTime = new Date()
use(groovy.time.TimeCategory) {
def EndTime = StartTime + 15.minutes
vars.put("StartTime", StartTime.getTime() as String)
vars.put("EndTime", EndTime.getTime() as String)
}
在If Controller中,使用以下__groovy() function:
${__groovy((vars.get('EndTime') as long) - (vars.get('StartTime') as long) >= 90000,)}
总体情况下,如果控制器配置只是为了以防万一:
查看6 Tips for JMeter If Controller Usage文章是否有不清楚之处