JMeter - 变量的Groovy脚本连接

时间:2017-12-13 05:51:14

标签: java groovy jmeter string-concatenation

Groovy是JMeter中的首选脚本

  

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

JSR233 Sampler中的以下代码适用于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 个答案:

答案 0 :(得分:1)

为什么不使用:

  

字符串文字=&#34;&lt; id&gt;&#34; &lt;&lt; vars [&#34; id1&#34;]&lt;&lt; &#34;&LT; ID&GT;&LT; ID2&GT;&#34; &LT;&LT; vars [&#34; id2&#34;]&lt;&lt; &#34;&LT; ID2&GT;&#34 ;;

它对我有用

答案 1 :(得分:1)

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

def vars = ["id": "value", "id2": "value2", "id3": "value3"]

String text = ""
vars.each { k, v ->
    text += "<${k}>${v}</${k}>"
}

println text

答案 2 :(得分:1)

Groovy使用换行符表示语句的结尾,除非它知道下一行必须扩展当前行。在下一行的开始处支持许多二进制运算符。 “ +”和“-”运算符具有二进制和一元变量,当前(Groovy版本至少为2.5.x)在下一行的开头不支持这些运算符。您可以将运算符放在前一行的末尾(如您的第一行),也可以在前一行的末尾使用换行符:

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