2012-04-19 249 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