在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”要求”

+0

为什么你需要一个循环创造价值?你可以在循环结束时输入值 – user7294900

+0

我需要一个接一个地传递10000个日期。所以我创建了循环。我不明白在循环结束时如何输入值请澄清 –

+1

你的循环是做什么的?只是继续把它放在同一个变量中,是否有更多的代码在每次迭代中使用日期? – user7294900

你的代码总是返回一个将来的时间戳(比当前时间提前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次

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

如果你必须去考虑的脚本使用被Groovy(你可以用它从JSR223 Test Elements)最表演语言

+0

第一个选项不适合我 –