2012-04-19 255 views
13

我正在使用JMeter。我想使用用户定义的变量指定测试主机,像这样:引用JMeter中变量的变量

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

执行测试,我看到的主机名值不是取代,显然测试失败。我知道我可以使用属性并从命令行传递主机名,或者只是更改主机名值。有没有可能像我解释过的那样?
谢谢。

回答

12

我已经设法解决我的问题。我已经改变了主机变量值:${__evalVar(${localhost})},但我得到这个错误:

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

所以我搬到我的采样点的“用户定义的变量”子节点的主机名变量声明。这解决了它。

+4

很好,你自己解决了这个问题。一个注意:[测试计划中的所有UDV元素 - 无论它们在哪里 - 都会在开始时处理](http://jmeter.apache.org/usermanual/component_reference.html#User_Defined_Variables),所以我也可以简单地使用2 _consequent_单独的UDV并按照您的方式在第一个'localhost'var和第二个'主机名'中定义。 – 2012-04-19 09:45:41

+0

谢谢,我没有想到这种方法。我喜欢。 – Carlo 2012-04-19 10:11:01

0

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

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

由于@Alies别利克提到的,如果你得到

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

然后定义在明年其他UDV第二个变量(用户定义的变量)节点。

+1

'$ {__ V'在这里毫无意义。他不是在尝试做var-vars。 – Pacerier 2015-10-09 11:12:39

5

为了解决这个问题,你应该使用主机名= $ {__的eval($ {本地主机})}
http://jmeter.apache.org/usermanual/functions.html#__eval
卡洛斯的回答有错误(这我不能发表评论,因为REP),因为它使用evalVar,这需要一个纯字符串作为参数:

This works: ${__evalVar(localhost)})
This works: ${__eval(${localhost})}
This doesn't work (the current answer): ${__evalVar(${localhost})} http://jmeter.apache.org/usermanual/functions.html#__evalVar

+0

微小的事情,但它看起来像你有一个额外的右括号在 '这工作:$ {__ evalVar(本地主机)})'''。 – raph 2018-01-23 20:15:23