如何在jMeter中为参数添加多个值

sar*_*rbo 0 jmeter beanshell

如何将多个值(使用正则表达式提取器提取这些值)添加到参数中.

我有以下测试: 在此输入图像描述

使用正则表达式提取器,我得到以下内容:

在此输入图像描述

现在我正在使用包含以下代码的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) + "]");
}
Run Code Online (Sandbox Code Playgroud)

使用它将生成以下请求:

在此输入图像描述

这将添加多个具有相同名称的参数(articleIds),这将导致我在运行测试时出错.参数的正确形式应该是:

articleIds=["148437", "148720"]
Run Code Online (Sandbox Code Playgroud)

articleIds的数量因用户而异.

Dmi*_*i T 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());
Run Code Online (Sandbox Code Playgroud)

有关JMeter Beanshell脚本编写菜单的详细信息和种类,请参见如何使用BeanShell指南.