代码之家  ›  专栏  ›  技术社区  ›  vaibhav misra

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

  •  0
  • vaibhav misra  · 技术社区  · 7 年前

    我有一个Jmeter(4.0版)测试脚本,其中我使用json提取器从json响应中提取字符串数组,使用 $。。名称 并将其存储在变量中 姓名组 。各种名称存储为groupOfNames\u 1、groupOfNames\u 2、groupOfNames\u ALL。

    下一步我要和body一起打电话

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

    如何使用bean shell预处理器实现这一点? groupOfNames\u所有 给我所有的价值,但像这样。。。。name1、name2、name3(各个名称周围没有引号)。请帮忙。谢谢

    2 回复  |  直到 7 年前
        1
  •  3
  •   Dmitri T    7 年前

    我听说了 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

        2
  •  2
  •   ararar    7 年前

    将以下代码放入 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}
    }