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]类似但我想要所有值。有人可以帮助我如何一一选择所有值并在下一个请求中替换。

4

1 回答 1

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语言,因为强烈建议 JMeter 3.1 用户将所有脚本任务切换到 Groovy。Groovy 等价物是

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

Groovy 是更“高级”的语言,它支持所有现代 Java 功能,并在 Java SDK 之上提供一些语法糖。此外,与 Beanshell 相比,Groovy 的性能要好得多。有关更多详细信息,请参阅Apache Groovy - 为什么以及如何使用它

于 2018-06-28T08:15:44.013 回答