如何从BeanShell PostProcessor中一个接一个地选择数组值

时间:2018-06-28 07:56:58

标签: jmeter jmeter-4.0

如何从BeanShell PostProcessor中一个接一个地选择数组值 我有下面的代码

//Here split those ',' separated values
// getting this values like List=1072,1073,1074, ......

String HID = vars.get("List"); String[] words = HID.split(","); 
for (int i = 0; i < words.length; i++) 
{
  log.info(words[i]);
  if (i == 0) 
  {
      log.info("First value is: " + words[0]);
  }
}
vars.put("H_ID", words[0]);

我想一个接一个地选择所有值。为此,我使用了vars.put("Hit_ID", words[i]);但没有解决。它仅适用于words[0]words[2] 但是我想要所有价值。 有人可以帮我一个接一个地选择所有值并替代下一个请求的方法。

1 个答案:

答案 0 :(得分:0)

您仅使用第一项,因此您的HD_ID始终包含第一值,即1072。如果需要所有值,则需要修改代码,例如:

String HID = vars.get("List"); String[] words = HID.split(",");
for (int i = 0; i < words.length; i++) {
    log.info(words[i]);
    if (i == 0) {
        log.info("First value is: " + words[0]);
    }
    vars.put("H_ID_" + i, words[i]);
}

这样,您将获得以下变量:

H_ID_0=1072
H_ID_1=1073
H_ID_2=1074

更好的选择是使用JSR223 PostProcessorGroovy语言代替since JMeter 3.1 users are strongly recommended to switch to Groovy来完成所有脚本任务。相当于Groovy的是

vars.get('List').split(',').eachWithIndex { String number, int index ->
    vars.put("HD_ID_" + index, number)
}

Groovy是一种更“高级”的语言,它支持所有现代Java功能,并在Java SDK之上提供了一些syntax sugar。而且,与Beanshell相比,Groovy具有更好的性能。有关更多详细信息,请参见Apache Groovy - Why and How You Should Use It