在jmeter中的变量值在http请求中没有正确递增
问题描述:
在jmeter> bean shell预处理器中,我写了代码来递增日期和这个日期变量,我已经传递给一个http请求。不过,虽然仅调试的第一次约会是取得被.incremented日期不传递给变量在jmeter中的变量值在http请求中没有正确递增
Calendar cal = Calendar.getInstance();
for (int i = 0; i < 100; i++) {
cal.add(Calendar.SECOND, 1);
SimpleDateFormat sdfDate = new SimpleDateFormat("yyyy-MM-dd
kk:mm:ss"); //dd/MM/yyyy
Date now = new Date();
String strDate = sdfDate.format(cal.getTime());
vars.put("timer", strDate);
log.info("DATE" + strDate);
}
这个“计时器”变量未递增到http请求“N”要求”
答
你的代码总是返回一个将来的时间戳(比当前时间提前100秒)并将其保存到${timer}
变量中。
取决于你想要达到的目的,有几个选项:
-
变化
vars.put("timer", strDate);
线vars.put("timer_" + i, strDate);
,这样你会得到以下变量:timer_0=current time + 1 second timer_1=current time + 2 seconds ... timer_99=current time + 100 seconds
- 删除环路它并不是真的需要,因为你覆盖
${timer}
变量100次
另请注意,根据JMeter Best Practices,使用Beanshell不是最好的脚本选项,您应该尽可能避免使用脚本。例如,特别是您的情况,您可以使用__time()和__longSum()函数组合实现相同的功能。查看Apache JMeter Functions - An Introduction以熟悉JMeter Functions的概念。
如果你必须去考虑的脚本使用被Groovy(你可以用它从JSR223 Test Elements)最表演语言
+0
第一个选项不适合我 –
为什么你需要一个循环创造价值?你可以在循环结束时输入值 – user7294900
我需要一个接一个地传递10000个日期。所以我创建了循环。我不明白在循环结束时如何输入值请澄清 –
你的循环是做什么的?只是继续把它放在同一个变量中,是否有更多的代码在每次迭代中使用日期? – user7294900