在JMeter中引用变量中的变量

时间:2012-04-19 08:27:53

标签: variables jmeter

我正在与JMeter合作。我想使用用户定义的变量指定测试主机,如下所示:

variable name       value  
localhost           localhost  
test                192.168.0.1
hostname            ${localhost}  

执行测试时,我看到主机名值未被替换,显然测试失败。我知道我可以使用属性并从命令行传递主机名,或者只是更改主机名值。是否有可能像我解释的那样? 感谢。

4 个答案:

答案 0 :(得分:13)

我设法解决了我的问题。我已将主机名变量值更改为:${__evalVar(${localhost})},但我收到此错误:

  

ERRROR jmeter.functions.EvalVarFunction:尚未定义变量

所以我在我的Sampler节点的“User defined variable”子节点中移动了hostname变量声明。这解决了它。

答案 1 :(得分:6)

要解决此问题,您应该使用hostname = $ {__ eval($ {localhost})}
http://jmeter.apache.org/usermanual/functions.html#__eval
Carlos的回答有一个错误(由于代表我无法评论),因为它使用了evalVar,这需要一个简单的字符串作为参数:

  

这有效:$ {__ evalVar(localhost)})
     这有效:$ {__ eval($ {localhost})}
     这不起作用(当前答案):$ {__ evalVar($ {localhost})}   http://jmeter.apache.org/usermanual/functions.html#__evalVar

答案 2 :(得分:1)

查看此论坛: from Blazemeter

例如:获取变量“ listid_XXX”的值,其中XXX数字来自索引变量:

${__V(listid_${idx1})}

答案 3 :(得分:0)

新版本(2.2版),您可以使用${__V(${...})}/

例如:${__V(${SERVER_CONTEXT})}/rest

正如@Alies Belik所提到的,如果你得到了

ERRROR jmeter.functions.EvalVarFunction: Variables have not yet been defined

然后在下一个其他UDV(用户定义变量)节点中定义第二个变量。