在性能测试埋底数据时,日期和时间要生成不一样的,该如何做呢?
我们知道jmeter中有个函数叫,_randomdate函数,可以随机生成startdate---enddate中的随机一天。
引用:${__RandomDate(yyyy-MM-dd,2000-01-01,2020-01-01,,)}----时间自己随机改,这样10并发请求一次,10个请求所生成的时间都是不一样的。
除了以上这种,假如要随机生成时分秒呢?
可以用time函数生成此刻的时分秒:
${__time(HH:mm:ss,)},但是若同一秒并发10个的话,获取的时间不是唯一的,10个请求时间全是16:45分,证明这样还是无法满足需求,那么time函数中的时分秒可以用random函数来替代吗?
下面我们将time函数中的时分秒用随机数来代替,看看能否生成不一样的数据:
${__time(${__Random(0,24,)}:mm:ss,)},实时证明,这样也不行,并发10个请求循环一次情况下,生成的时间是相同的,只有下一次循环,会生成不一样的数据。
那么怎么让10个请求循环一次的情况下,生成的时间不一致呢?
既然time函数可以随机生成所定义的年月日时分秒,那可以将时间从time函数拿出来,用random或者计数器来实现。
试试如下:
${__Random(0,24,)}:${__time(mm:ss,)},这样就可以生成10个不同的小时了,但是random函数很容易生成相同的数据,同一秒内60并发的情况下,很容易生成相同的数据,数据不是均匀分散的,故为了均匀分散,可以将random函数改为计数器,但是这样并发数最好小于60,大于60 的情况下,时间有可能出现相同的,如下:
${id}:${__time(mm:ss,)}
随机生成时分秒:
此处若对唯一性要求不高的话,可以使用如下函数:
${__RandomDate(,,2029-09-13,,)} ${__Random(0,24,)}:${__Random(01,59,)}:${__Random(01,59,)}
也可以使用以下函数:
${__RandomDate(,,2029-09-13,,)} ${id}:${__time(mm:ss,)} //id为定义的计数器