2012-04-19 19 views
13

Estoy trabajando con JMeter. Me gustaría especificar el host de prueba usando las variables definidas por el usuario, de esta manera:Referencia una variable dentro de una variable en JMeter

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

La ejecución de la prueba, veo que el valor de nombre de host no está sustituido, y, obviamente, la prueba falla. Sé que puedo usar propiedades y pasar el nombre de host desde la línea de comando, o simplemente cambiar el valor del nombre de host. ¿Es posible como lo he explicado?
Gracias.

Respuesta

12

He logrado resolver mi problema. He cambiado el valor de la variable de nombre de host: ${__evalVar(${localhost})}, pero tengo este error:

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

Así que me he movido la declaración de variables nombre de host en una "variable definida por el usuario" nodo hijo del nodo mi Sampler. Eso lo resolvió

+4

Bien, usted ha resuelto esto solo. Una nota: [todos los elementos de UDV en un plan de prueba, sin importar dónde se encuentren, se procesen al principio] (http://jmeter.apache.org/usermanual/component_reference.html#User_Defined_Variables), así que también podría simplemente use 2 _consequent_ UDV por separado y defina en la 1ra 'var. localhost' y en la 2da - 'nombre de host' en la forma en que lo hizo. –

+0

Gracias, no pensé en este enfoque. Me gusta. – Carlo

0

Nuevas versiones más nuevas (de 2.2), puede usar ${__V(${...})}/.

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

Como se mencionó @Alies Belik, si se obtiene

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

definir la segunda variable en la próxima otra UDV (variables definidas por el usuario) nodo.

+1

'$ {__ V' no tiene sentido aquí. Él no está tratando de hacer var-vars. – Pacerier

5

Para resolver esto debe utilizar el nombre de host = $ {__ eval ($ {localhost})}
http://jmeter.apache.org/usermanual/functions.html#__eval
respuesta de Carlos tiene un error (que no puedo comentar sobre debido a REP), ya que utiliza evalVar, esto requiere como argumento una cadena simple:

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

Cosa pequeña, pero parece que tiene un paréntesis adicional al final de 'Esto funciona: $ {__ evalVar (localhost)})'. – raph

Cuestiones relacionadas