如何从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]
但是我想要所有价值。
有人可以帮我一个接一个地选择所有值并替代下一个请求的方法。
答案 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 PostProcessor和Groovy语言代替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。