Jmeter:如何从_RandomDate()获取工作日

问题描述 投票:0回答:1

我正在使用 jmeter __Randomdate() 生成日期并将其传递给 API 请求。大多数情况下,生成的日期都是周末。如何只获取工作日?

如果是周末,我尝试使用 __timeshift() ,但 __time(EEE,) 给出的是当前日期的日期,而不是来自变量。有人可以帮忙解决这个问题吗?谢谢

jmeter weekday
1个回答
0
投票

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}

© www.soinside.com 2019 - 2024. All rights reserved.