目录
- 1、入口位置:
- 2、验证函数生成值
- 3、获取 年月日时分秒 的全随机
- 4、时间函数
前言:有时候我们做性能测试或者接口测试时,参数需要传入日期格式,但是又不想每次都是用同一个日期,我们就可以使用Jmeter工具中函数助手里面使用RandomDate,随机生成日期的值
话不多说,直接干:
1、入口位置:
解析下参数内容:
1、
Format string for DateTimeFormatter (optional) (default yyyy-MM-dd)
表示想要生成的日期格式(yyyy代表年,MM代表月,dd代表日),格式可以自己组合,例如:
yyyy-MM、yyyy MM、yyyy/MM、dd/MM/yyyy等
2、
开始时间,可填也可不填,不填写,就是默认值,但是函数里面要留有一个位置,需要注意的是这里填写的时间,要和上面的格式对应上,否则无效。
3、
结束时间,就是字面意思,也要和上面的格式对应上
4、
String format of a locale (ex: fr_FR , en_EN) (optional)
这个是时区,可以不考虑,不填写也要留一个位置,下面有示例
5、
存储结果的变量名,可填也可不填,不填写时,函数里面要留有一个位置,填写的话,可以在其他地方引用,
比如:我们还有个接口参数是结束日期,也需要随机选择,但是正常逻辑结束日期应大于开始日期,所以我们结束日期使用这个函数时,就可以用开始日期的变量名,保证结束日期大于等于开始日期
示例1:我们需要从2024-01-01作为最早的日期, 结束日期为2024-10-01,然后开始日期和结束日期都是随机值,那我们就可以这样写
start_date = ${__RandomDate(yyyy-MM-dd,2024-01-01,2024-10-01,,start_date)}
end_date = ${__RandomDate(yyyy-MM-dd,${start_date},2024-10-01,,end_date)}
示例2:从现在到 2024-10-01 之间,返回一个随机日期
${__RandomDate(,2024-10-01,)}
2、验证函数生成值
我们再随便找个能访问的网站即可
然后发送请求,查看结结构树里面的请求值,可以多请求几次
可以看到日期都是随机的,且结束日期大于等于开始日期
3、获取 年月日时分秒 的全随机
有人可能想使用 年-月-日 时-分-秒 的格式,很遗憾这里不能参数化带有时分秒的格式,因为函数名就已经明确告知,是RandomDate不是RandomTime
示例:
若是真需要 年-月-日 时-分-秒(yyyy-MM-dd HH:mm:ss)格式的随机值需求,我自己写了一个全随机的函数:
'${__RandomDate(yyyy-MM-dd,2024-01-01,2024-10-01,,start_date)} ${__if(${__strLen(${__Random(0,23,H)},)},1,0${H},${H},HH)}:${__if(${__strLen(${__Random(0,23,m)},)},1,0${m},${m},mm)}:${__if(${__strLen(${__Random(0,23,s)},)},1,0${s},${s},ss)}'前半段是获取年月日,不再分析
后半段分析:小时
${__Random(0,23,H)} 获取小时值
${__strLen(${__Random(0,23,H)},)} --获取长度,并赋变量名为H
${__if(${__strLen(${__Random(0,23,H)},)},1,0${H},${H},HH)}
-- 若是只有1位长度,我们就补0,否在就取生成的值,最后赋变量名为HH,防止其他地方有使用时,我们直接引用变量名即可
测试:
4、时间函数
1、获取当前时间
${__time(YYYYMMDHMS,)}
年月日时分秒
${__time(yyyy-MM-dd,)}
年月日
${__time(YMDHMS,)}
年月日-时分秒
${__time(HHmmss,)}
时分秒
2、获取当前时间加N天N小时N分钟N秒或者减N天N小时N分钟N秒
${__timeShift(,,,,)}
获取当前时间
${__timeShift(,,P1d,,)}
增加1天
${__timeShift(,,PT1H,,)}
增加1小时
${__timeShift(yyyy-MM-dd HH:mm:ss:SSS,,,,)}
获取当前时间
${__timeShift(yyyy-MM-dd HH:mm:ss:SSS,,P1d,,)}
增加1天
${__timeShift(yyyy-MM-dd HH:mm:ss:SSS,,PT1H,,)}
增加1天1小时
${__timeShift(yyyy-MM-dd HH:mm:ss:SSS,,PT10m,,)}
增加10分钟
${__timeShift(yyyy-MM-dd HH:mm:ss:SSS,,PT20S,,)}
增加20秒
${__timeShift(yyyy-MM-dd HH:mm:ss:SSS,,P1dT1H10m20s,,)}
增加1天1小时10分钟20秒
3、获取当前时间戳
${__time(,)}
默认精确到毫秒级别,13位数
${__time(/1000,)}
默认精确到秒,10位数
${__intSum(${__time(/1000,)},6000,)}
XX秒后,精确到秒,10位数