在实际的接口用例测试中,有些接口是需要输入当前时间的,而且格式各异,那么有没有方法可以直接获取时间呢?有的,Jmeter提供了time函数来达成这一点。
1. time函数的两个参数
打开函数助手,找到__time这个函数,可以看到该函数有两个参数,即格式和参数名称,两者都不是必填项,
格式:非必填项,格式如果不填那么就是默认获取当前时间的毫秒数(此项也常被用于接口参数中那些不允许重复的字段);
参数名称:非必填项,如果填了,则生成的时间会被放到该参数中,可以在任意地方调用这个参数,常用于多接口中某个值使用同一个时间参数的情况;
${__time(,)}:获取当前时间的毫秒数,13位数;
${__time(,time_ms)}:获取当前时间的毫秒数并存入参数
time_ms
中;${__time(/1000,)}:获取当前时间的秒数,10位数;
${__time(/1000,time_s)}:获取当前时间的秒数并存入参数
time_s
中;${__time(yyyy-MM-dd,)}:获取当前日期;
${__time(yyyy-MM-dd,time_date1)}:获取当前日期并存入参数
time_date1
中;${__time(yyyy-MM-dd HH:mm:ss,)}:获取当前时间,固定格式;
${__time(yyyyMMddHHmmss,time_2)}:获取当前时间,固定格式,并存入参数
time_2
中;${__time(YMDHMS,)}:获取当前时间,固定格式
范例如下(范例中均为Debug sampler):
结果如下:前几个请求值是符合要求的,最后一个Debug Sampler中的时间参数值也和预期一致。
实际应用范例: 3. 怎么表示过去的时间呢? 3.1 第一种情况上一年(年):
${__intSum(${__time(YYYY,nowYear)},-1,lastYear)}
上个月(月):
${__intSum(${__time(M,nowMonth)},-1,lastMonth)}
前一天(日):
${__intSum(${__time(d,nowDate)},-1,lastDate)}
前一小时(时):
${__intSum(${__time(H,nowHour)},-1,lastHour)}
前一分钟(分):
${__intSum(${__time(m,nowMinute)},-1,lastMinute)}
前一秒(秒):
${__intSum(${__time(s,nowSecond)},-1,lastSecond)}
3.2 第二种情况
前一秒时(年-月-日 时-分-秒):【此刻为 0 秒时,不适用】
${__time(yyyy-MM-dd HH:mm,nowyMdHm)}:${__intSum(${__time(s,nowSecond)},-1,lastSecond)}
前一分钟时(年-月-日 时-分-秒):【此分钟为 0 分时,不适用】
${__time(yyyy-MM-dd HH,nowyMdH)}:${__intSum(${__time(m,nowMinute)},-1,lastMinute)}:${__time(s,nowSecond)}
前一小时时(年-月-日 时-分-秒):【此时为 0 或 24 时时,不适用】
${__time(yyyy-MM-dd,nowyMd)} ${__intSum(${__time(H,nowHour)},-1,lastHour)}:${__time(m,nowMinute)}:${__time(s,nowSecond)}
昨天(年-月-日):【当天为当月第一天时,不适用 】
${__time(YYYY,nowYear)}-${__time(M,nowMonth)}-${__intSum(${__time(d,nowDate)},-1,lastDate)}
昨天此时(年-月-日 时-分-秒):【当天为当月第一天时,不适用 】
${__time(YYYY,nowYear)}-${__time(M,nowMonth)}-${__intSum(${__time(d,nowDate)},-1,lastDate)} ${__time(HH:mm:ss,nowTime)}
上个月今天时(年-月-日 时-分-秒):【当月为 1 月时,不适用】
${__time(YYYY,nowYear)}-${__intSum(${__time(M,nowMonth)},-1,lastMonth)}-${__time(d,nowDate)} ${__time(HH:mm:ss,nowTime)}
上一年今天时(年-月-日 时-分-秒):
${__intSum(${__time(YYYY,nowYear)},-1,lastYear)}-${__time(M,nowMonth)}-${__time(d,nowDate)} ${__time(HH:mm:ss,nowTime)}
4. 怎么表示未来的时间呢?
4.1 第一种情况
下一年(年):
${__intSum(${__time(YYYY,nowYear)},+1,nextYear)}
下个月(月):
${__intSum(${__time(M,nowMonth)},+1,nextMonth)}
下一天(日):
${__intSum(${__time(d,nowDate)},+1,nextDate)}
下一小时(时):
${__intSum(${__time(H,nowHour)},+1,nextHour)}
下一分钟(分):
${__intSum(${__time(m,nowMinute)},+1,nextMinute)}
下一秒(秒):
${__intSum(${__time(s,nowSecond)},+1,nextSecond)}
4.2 第二种情况
下一秒时(年-月-日 时-分-秒):【此刻为 59 秒时,不适用】
${__time(yyyy-MM-dd HH:mm,nowyMdHm)}:${__intSum(${__time(s,nowSecond)},+1,nextSecond)}
下一分钟时(年-月-日 时-分-秒):【此分钟为 59 分时,不适用】
${__time(yyyy-MM-dd HH,nowyMdH)}:${__intSum(${__time(m,nowMinute)},+1,nextMinute)}:${__time(s,nowSecond)}
下一小时时(年-月-日 时-分-秒):【此时为 23 时时,不适用】
${__time(yyyy-MM-dd,nowyMd)} ${__intSum(${__time(H,nowHour)},+1,nextHour)}:${__time(m,nowMinute)}:${__time(s,nowSecond)}
明天(年-月-日):【当天为当月最后一天时,不适用 】
${__time(YYYY,nowYear)}-${__time(M,nowMonth)}-${__intSum(${__time(d,nowDate)},+1,nextDate)}
明天此时(年-月-日 时-分-秒):【当天为当月最后一天时,不适用 】
${__time(YYYY,nowYear)}-${__time(M,nowMonth)}-${__intSum(${__time(d,nowDate)},+1,nextDate)} ${__time(HH:mm:ss,nowTime)}
下个月今天时(年-月-日 时-分-秒):【当月为 12 月时,不适用】
${__time(YYYY,nowYear)}-${__intSum(${__time(M,nowMonth)},+1,nextMonth)}-${__time(d,nowDate)} ${__time(HH:mm:ss,nowTime)}
下一年今天时(年-月-日 时-分-秒):
${__intSum(${__time(YYYY,nowYear)},+1,nextYear)}-${__time(M,nowMonth)}-${__time(d,nowDate)} ${__time(HH:mm:ss,nowTime)}
如果大家在工作中遇到问题,后来找到解决办法了,欢迎投稿给我们。
往期回顾:
Jmeter插件标签未显示怎么办
软件测试人员必备 JMeter参数化(CSV 数据文件设置)
Jmeter元件Runtime控制器
中国银行业务知识汇编