RandomDate(接口参数化-随机生成日期)


前言:有时候我们做性能测试或者接口测试时,参数需要传入日期格式,但是又不想每次都是用同一个日期,我们就可以使用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位数

  • 21
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值