我希望在每次迭代时使用Jmeter增加1天2个日期,即
Date1:2014/01/01(iteration1 = 2014/01/02),(iteration1 = 2014/01/03)etc
日期2:2014/09/01(iteration1 = 2014/09/02),(iteration1 = 2014/01/03)等
我该怎么做?
答案 0 :(得分:3)
对于JMeter细节:
添加User Defined Variables元素以设置初始日期值,例如
添加Beanshell PreProcessor作为您需要这些更新日期的请求的子项。将以下代码放入预处理器"脚本"是:
import java.text.SimpleDateFormat; // necessary
import java.util.Calendar; // imports
import java.util.Date;
SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd"); // define date format
Date date1 = sdf.parse(vars.get("DATE1")); // get DATE1 from User Defined variables
Date date2 = sdf.parse(vars.get("DATE2")); // get DATE2 from UDV
Calendar cal = Calendar.getInstance(); // get Calendar instance
cal.setTime(date1); // set Calendar's time to be DATE1
cal.add(Calendar.DAY_OF_YEAR,1); // add 1 day to DATE1
date1 = cal.getTime(); // set the new value for date1
vars.put("DATE1",sdf.format(date1)); // update DATE1 JMeter variable
cal.setTime(date2); // set Calendar time to DATE2
cal.add(Calendar.DAY_OF_YEAR,1); // add 1 day
date2 = cal.getTime(); // set the new value for date2
vars.put("DATE2",sdf.format(date2)); // update DATE2 JMeter variable
log.info("DATE1=" + vars.get("DATE1")); // print value of DATE1 to jmeter.log
log.info("DATE2=" + vars.get("DATE2")); // print value of DATE2 to jmeter.log
执行3次后,它提供以下输出:
2014/08/30 10:11:13 INFO - jmeter.util.BeanShellTestElement: DATE1=2014/01/02
2014/08/30 10:11:13 INFO - jmeter.util.BeanShellTestElement: DATE2=2014/09/02
2014/08/30 10:11:13 INFO - jmeter.util.BeanShellTestElement: DATE1=2014/01/03
2014/08/30 10:11:13 INFO - jmeter.util.BeanShellTestElement: DATE2=2014/09/03
2014/08/30 10:11:13 INFO - jmeter.util.BeanShellTestElement: DATE1=2014/01/04
2014/08/30 10:11:13 INFO - jmeter.util.BeanShellTestElement: DATE2=2014/09/04
${DATE1}
和${DATE2}
。 有关Apache JMeter中Beanshell脚本的更多信息,请查看How to use BeanShell: JMeter's favorite built-in component指南
答案 1 :(得分:1)
在JMeter中:
0 /首先安装Groovy:
从http://groovy.codehaus.org/下载,截至今日的当前版本为2.3.6
解压缩文件并找到文件夹 embeddable 并在jmeter / lib文件夹中复制groovy-all-2.3.6.jar
重新启动JMeter
那就是它!
1 /添加User Defined Variables元素以设置初始日期值,如下所示:
- DATE1=2014/01/01
- DATE2=2014/09/01
2 /为降低语法,性能和语言能力执行此操作的建议方法是使用Groovy + JSR223 PreProcessor,以这种方式配置:
3 /将此代码粘贴到JSR 223 PreProcessor中:
final String DATE_PATTERN = "yyyy/MM/dd";
def d1Plus1 = Date.parse(DATE_PATTERN, vars["DATE1"] ) + 1;
def d2Plus1 = Date.parse(DATE_PATTERN, vars["DATE2"] ) + 1;
vars.put("DATE1", d1Plus1.format(DATE_PATTERN));
vars.put("DATE2", d2Plus1.format(DATE_PATTERN));
4 /请将您的变量称为${DATE1}
和${DATE2}
5 /运行此计划显示此结果:
为什么Groovy是你最好的选择,请阅读:
答案 2 :(得分:0)
以下是一个例子:
向Calendar
添加若干天的功能:
void addDay(Calendar calendar, int offsetDay) {
calendar.add(Calendar.DAY_OF_YEAR, offsetDay);
}
5次迭代的例子(自2014/01/01起):
Calendar calendar = Calendar.getInstance();
calendar.set(2014, Calendar.JANUARY, 1);
for (int i = 0 ; i < 5; i++) {
addDay(calendar, 1);
// Only for preview sample (if sdf = new SimpleDateFormat("yyyy/MM/dd");)
System.out.println(sdf.format(calendar.getTime()));
}
执行此代码的输出将是:
2014/01/02
2014/01/03
2014/01/04
2014/01/05
2014/01/06
希望它对你有所帮助。
答案 3 :(得分:0)
就像Groovy的善良一样简单:
Date end= new Date() + 5 // from now till +5 days
for( Date curr = new Date(); curr < end; curr++ ){
println curr.format( 'dd.MM' )
}
给出
29.08
30.08
31.08
01.09
02.09