如何捕获jmeter中特定限制之间的随机日期?

时间:2014-06-23 07:09:03

标签: jmeter

在我的应用程序中,DOB字段具有特定间隔的限制。我想捕捉1950年1月1日到2000年12月31日之间的随机日期。请建议。提前感谢您的宝贵建议。

2 个答案:

答案 0 :(得分:0)

您可以使用 bean shell脚本采样器来调用java apis并使用Joda time - java库,您可以生成两个特定日期之间的日期,如下所示(参考:Java Generate all dates between x and y)和随机选择列表项目日期, 请参考jmeter中的this link for using Beanshell

import java.util.ArrayList;
import java.util.List;

import org.joda.time.DateTime;


public class DateQuestion {

    public static List<DateTime> getDateRange(DateTime start, DateTime end) {

        List<DateTime> ret = new ArrayList<DateTime>();
        DateTime tmp = start;
        while(tmp.isBefore(end) || tmp.equals(end)) {
            ret.add(tmp);
            tmp = tmp.plusDays(1);
        }
        return ret;
    }

    public static void main(String[] args) {

        DateTime start = DateTime.parse("2012-1-1");
        System.out.println("Start: " + start);

        DateTime end = DateTime.parse("2012-12-31");
        System.out.println("End: " + end);

        List<DateTime> between = getDateRange(start, end);
        for (DateTime d : between) {
            System.out.println(" " + d);
        }
    }
}

答案 1 :(得分:0)

您可以使用Beanshell预处理器获取随机DOB。 只需复制&amp;粘贴以下代码。它应该工作。

我将随机日期存储在'dob'变量中。所以,只需在出生日期使用$ {dob}。

import java.util.GregorianCalendar;
import java.text.SimpleDateFormat;

dateFormat1 = new SimpleDateFormat("d-M-yyyy");
dateFormat2 = new SimpleDateFormat("dd-MMM-yyyy");

int randBetween(int start, int end) {
        return start + (int)Math.round(Math.random() * (end - start));
    }

gc = new GregorianCalendar();
year = randBetween(1950, 2000);
gc.set(gc.YEAR, year);
dayOfYear = randBetween(1, gc.getActualMaximum(gc.DAY_OF_YEAR));
gc.set(gc.DAY_OF_YEAR, dayOfYear);  
vars.put("dob", (dateFormat2.format(dateFormat1.parse(gc.get(gc.DAY_OF_MONTH) + "-" + (gc.get(Calendar.MONTH)+1) + "-" + gc.get(Calendar.YEAR)))));