2012-04-19 30 views
13

Pracuję z JMeter. Chciałbym podać szereg testów przy użyciu zmiennych zdefiniowanych przez użytkownika, na przykład:Odwołanie do zmiennej w zmiennej w JMeter

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

Wykonanie testu, widzę, że wartość hosta nie jest podstawiona, i oczywiście test nie powiedzie się. Wiem, że mogę używać właściwości i przekazywać nazwę hosta z wiersza poleceń lub po prostu zmieniać wartość nazwy hosta. Czy to możliwe, jak to wyjaśniłem?
Dzięki.

Odpowiedz

12

Udało mi się rozwiązać mój problem. Zmieniłem wartość zmiennej hostname do: ${__evalVar(${localhost})}, ale mam ten błąd:

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

Więc ja przeniósł hostname deklaracja zmiennej w „zmiennym” zdefiniowane przez użytkownika węzła potomnego mojego węzła Sampler. To rozwiązało to.

+4

Dobrze, że rozwiązałeś to sam. Jedna uwaga: [wszystkie elementy UDV w planie testów - bez względu na to, gdzie są - są przetwarzane na początku] (http://jmeter.apache.org/usermanual/component_reference.html#User_Defined_Variables), więc mogłem też po prostu użyj 2 _consequent_ separate UDV i zdefiniuj w pierwszym 'localhost' var oraz w 2nd - 'hostname' w taki sposób, w jaki zrobiłeś. –

+0

Dzięki, nie myślałem o tym podejściu. Lubię to. – Carlo

0

Nowe nowsze wersje (od 2.2), można użyć ${__V(${...})}/.

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

Jak @Alies Belik wspomniano, jeśli uzyska

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

następnie zdefiniować 2nd zmienną w następnym drugiej UDV (User zdefiniowanych zmiennych) węzła.

+1

'$ {__ V' jest tutaj bezcelowe. On nie próbuje zrobić var-vars. – Pacerier

5

Aby rozwiązać ten problem należy użyć nazwy hosta = $ {__ eval ($ {localhost})}
http://jmeter.apache.org/usermanual/functions.html#__eval
odpowiedź Carlosa ma błąd (który nie mogę wypowiedzieć się na temat powodu REP), ponieważ używa evalVar, wymaga to jako argumentu zwykłego ciągu znaków:

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

Małe rzeczy, ale wygląda na to, że masz dodatkowy prawy nawias pod koniec 'Działa to: $ {__ evalVar (localhost)})'. – raph