Jmeter中Beanshell预处理器中的字符串数组过程

时间:2018-04-09 11:20:57

标签: jmeter beanshell

我有一个Jmeter(4.0版)测试脚本,我使用json提取器从响应json获取一个字符串数组,使用 $ .. Names 并将其存储在变量中是groupofNames 即可。各种名称的存储方式类似于groupOfNames_1,groupOfNames_2,groupOfNames_ALL。

我需要在body下面进行POST调用

{
"name1", "name2", "name3" (--actual values--)
}

如何使用bean shell预处理器实现此目的? groupOfNames_ALL 给了我所有的价值但是像这样.... name1,name2,name3(没有围绕个别名字的引号)。请帮忙。感谢。

2 个答案:

答案 0 :(得分:1)

将以下代码放入 BeanShell预处理器

int matchNr = Integer.parseInt(vars.get("groupOfNames_matchNr"));

for(int i = 1; i <= matchNr; i++){
    String Names = vars.get("groupOfNames_" + i);
    if(i == matchNr){
        vars.put("AllNames", vars.get("AllNames") + "\"" + Names + "\"");
    }
    else if(i == 1){
        vars.put("AllNames","\"" + Names + "\", ");
    }
    else{
        vars.put("AllNames", vars.get("AllNames") + "\"" + Names + "\", ");
    }

然后在帖子中使用变量 $ {AllNames} ,如下所示:

{
${AllNames}
}

答案 1 :(得分:1)

我听到Groovy is the New Black所以您可以在每个名称周围添加引号,如下所示:

vars.put('groupOfNames_ALL',vars.get('groupOfNames_ALL').split(',').collect {"\"$it\""  }.join(', '))

演示:

JMeter Groovy Add Quotation Marks Around Strings

同样温和提醒:JMeter users are encouraged to use JSR223 Test Elements for any form of scripting since JMeter 3.1