我正在使用 jmeter __Randomdate() 生成日期并将其传递给 API 请求。大多数情况下,生成的日期都是周末。如何只获取工作日?
如果是周末,我尝试使用 __timeshift() ,但 __time(EEE,) 给出的是当前日期的日期,而不是来自变量。有人可以帮忙解决这个问题吗?谢谢
JMeter 的内置测试元素都不适合您的要求,您需要使用 JSR223 PreProcessor 并使用 Groovy 语言计算日期。
示例代码类似于:
static def randomWeekdayDate(Date start, Date end) {
def random = new Random()
def cal = Calendar.getInstance()
cal.setTime(start)
def daysBetween = (long) ((end.time - start.time) / (24 * 60 * 60 * 1000))
def randomDays
while (true) {
randomDays = random.nextInt((int) daysBetween + 1)
cal.setTime(start)
cal.add(Calendar.DAY_OF_MONTH, randomDays)
int dayOfWeek = cal.get(Calendar.DAY_OF_WEEK)
if (dayOfWeek >= Calendar.MONDAY && dayOfWeek <= Calendar.FRIDAY) {
break
}
}
return cal.time
}
def start = new GregorianCalendar(2024, Calendar.JANUARY, 1).getTime()
def end = new GregorianCalendar(2024, Calendar.DECEMBER, 31).getTime()
def randomWeekday = randomWeekdayDate(start, end)
vars.put('randomDate', randomWeekday as String)
您将能够在需要时将生成的值称为
${randomDate}