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

Таким образом, я переместил объявление переменной хоста в «Определяется пользователем переменной» дочернего узла моего Sampler узла. Это решило.

+4

Отлично, что вы решили это самостоятельно. Одна нота: [все элементы UDV в плане тестирования - независимо от того, где они находятся - обрабатываются с самого начала] (http://jmeter.apache.org/usermanual/component_reference.html#User_Defined_Variables), поэтому я мог бы просто просто используйте 2 _consequent_ отдельный UDV и определите в 1-м «localhost» var, а во втором - «hostname» так, как вы это делали. –

+0

Спасибо, я не думал об этом подходе. Мне это нравится. – Carlo

0

Новые более новые версии (от 2.2), вы можете использовать ${__V(${...})}/.

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

Как @Alies Белик упоминалось выше, если вы получаете

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

затем определить 2-ой переменной в следующем другом UDV (User Defined Variables) узел.

+1

'$ {__ V' здесь бессмысленно. Он не пытается делать вар-вары. – Pacerier

5

Чтобы решить эту проблему, вы должны использовать имя хоста = $ {__ Eval ($ {локальный})}
http://jmeter.apache.org/usermanual/functions.html#__eval
ответ Карлоса имеет ошибку (который я не могу комментировать из-за репутации), как он использует 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 (localhost)})'. – raph

Смежные вопросы