我有一个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(没有围绕个别名字的引号)。请帮忙。感谢。
答案 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 users are encouraged to use JSR223 Test Elements for any form of scripting since JMeter 3.1