在jmeter中,变量值在http请求中没有正确递增

时间:2017-07-28 08:11:47

标签: jmeter beanshell

in jmeter> bean shell预处理器我编写了代码来增加日期和我传递给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);
}
这个&#39;计时器&#39;变量没有递增到http请求&nbsp;&#39; n&#39;请求&#39;

1 个答案:

答案 0 :(得分:0)

您的代码始终返回一个未来时间戳(比当前时间提前100秒)并将其保存到${timer}变量中。

根据您要实现的目标,有以下几种选择:

  1. 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
    
  2. 因为您要覆盖${timer}变量100次
  3. ,因此不需要删除循环

    另请注意,使用Beanshell并不是最好的脚本选项,根据JMeter Best Practices,您应该尽可能避免编写脚本。例如,特别是在您的情况下,您可以使用__time()__longSum()函数组合实现相同的功能。查看Apache JMeter Functions - An Introduction以熟悉JMeter Functions概念。

    如果您需要编写脚本,请考虑使用性能最高的语言Groovy(您可以使用JSR223 Test Elements