如何将多个值(使用正则表达式提取器提取这些值)添加到参数中。
我有以下测试:
使用正则表达式提取器,我得到以下内容:
现在我正在使用包含以下代码的BeanShell PreProcessor:
int count = Integer.parseInt(vars.get("articleID_matchNr"));
for(int i=1;i<=count;i++) { //regex counts are 1 based
sampler.addArgument("articleIds", "[" + vars.get("articleID_" + i) + "]");
}
使用此选项将生成以下请求:
这将添加多个具有相同名称的参数(articleIds),这将导致我在运行测试时出错。参数的正确形式应为:
articleIds=["148437", "148720"]
articleIds的数量因用户而异。
答案 0 :(得分:5)
当你为每场比赛添加一个参数时,这是完全可以预料到的。您需要按如下方式修改代码以获得所需的行为:
StringBuilder sb = new StringBuilder();
sb.append("[");
int count = Integer.parseInt(vars.get("articleID_matchNr"));
for (int i = 1; i <= count; i++) {
sb.append("\"");
sb.append(vars.get("articleID_" + i));
if (i < count) {
sb.append("\", ");
}
}
sb.append("\"]");
sampler.addArgument("articleIds", sb.toString());
有关JMeter Beanshell脚本手册的更多详细信息和种类,请参阅How to use BeanShell指南。