代码之家  ›  专栏  ›  技术社区  ›  Ori Marko

JMeter-Groovy脚本变量串联

  •  0
  • Ori Marko  · 技术社区  · 8 年前

    Groovy 是JMeter中的首选脚本

    我们建议使用Apache Groovy或任何支持JSR223可编译接口的语言。

    JSR233采样器中的以下代码在Java中工作,但在Groovy中不工作

    String a= "0"+"1" +
    "2" 
    +"3";
    log.info(a);
    

    我找到了 reasons 对于 + 操作员未按预期工作,

    但是解决方案是我想把几个变量连接到一个脚本中?

    我没有使用三个引号的答案 """The row Id is: ${row.id}..."""

    目前,我使用Java作为脚本语言,并使用JMeter${variable},尽管 not recommended :

    在这种情况下,请确保脚本不使用任何使用${varName}的变量,因为缓存将只取${varName}的第一个值

    String text ="...<id>${id}</id><id2>${id2}</id2>...";
    

    在这种情况下,groovy中有什么更好的方法?

    编辑 :

    尝试使用 << 但在拆分到新行时出现了不同的错误

    String text ="<id>" <<vars["id1"] << "<id><id2>" 
    << vars["id2"] << "<id2>";
    

    收到错误:

    org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed:
    Script12.groovy: 2: unexpected token: << @ line 2, column 1.
       << vars["id2"] << "<id2>";
    
    3 回复  |  直到 7 年前
        1
  •  1
  •   Paul King    7 年前

    Groovy使用新行字符表示语句结束,除非它知道下一行必须扩展当前行。支持下一行开头的许多二进制运算符。“+”和“-”操作符有二进制和一元变体,目前(Groovy版本至少达到2.5.x)不支持下一行开头的那些操作符。您可以将运算符放置在前一行的末尾(如第一行),或在前一行的末尾使用行连续字符:

    String a = "0" + "1" +
    "2" \
    + "3"
    log.info(a)
    
        2
  •  1
  •   UBIK LOAD PACK    8 年前

    为什么不使用:

    字符串文本=“<id>”<&书信电报;变量[id1]<&书信电报;“<id><id2>”<&书信电报;变量[“id2”]<&书信电报;“<id2>”;

    这对我有用

        3
  •  1
  •   susi    7 年前

    如果我有一个像你一样的concat哈希图,我会尝试:

    def vars = ["id": "value", "id2": "value2", "id3": "value3"]
    
    String text = ""
    vars.each { k, v ->
        text += "<${k}>${v}</${k}>"
    }
    
    println text