JMeter "если контроллер" с параметрами?
Я читал JMeter documentation и наткнулся на это информационное окно о "If Controllers":
Никакие переменные не доступны для script, когда условие интерпретируется как Javascript. Если вам нужен доступ к таким переменным, выберите "Интерпретировать условие как выражение переменной"? и используйте вызов функции __javaScript(). Затем вы можете использовать объекты "vars", "log", "ctx" и т.д. В script.
Я не совсем понимаю это. Означает ли это, что если я хочу получить доступ к "Пользовательскому параметру", то я могу получить к нему доступ только путем написания JavaScript? Пример, следующий за этим полем, затем ссылается на "$ {COUNT}"
Может ли кто-нибудь прояснить использование контроллера If, может быть, с примером или двумя?
Ответы
Ответ 1
Вы можете просто использовать что-то вроде
${my_variable}=='1'
Иногда документация JMeter может сбивать с толку:)
Изменить 27 сентября 2017 года:
Ответ здесь работает, но имеет очень плохую производительность, когда число потоков превышает 40.
Ниже приведен правильный и наиболее эффективный ответ:
См:
Ответ 2
Все эти ответы неверны! Вам нужно поставить ссылку на переменные в кавычки, например:
"${my_variable}"=="foo"
Ответ 3
НЕОБХОДИМО ПРОВЕРИТЬ ПРОВЕРКУ
"Интерпретировать условие как переменное выражение"
Я потратил пару часов, не сняв флажок. Он работал с и без точки с запятой (;) в конце инструкции. Перед вызовом контроллера if вы должны установить пользовательские переменные.
Все следующие вариации работали для меня в Джакарте Jmeter 1.5
- ${__ JavaScript ( "$ {} HOMEPAGE" == "Y" )}
- ${__ JavaScript ( "$ {} HOMEPAGE" == "Y" )};
- "$ {} HOMEPAGE" == "Y"
- "$ {} HOMEPAGE" == "Y";
Ответ 4
Бог благословит http://habrahabr.ru
Попробовали, пока не нашли их. ![enter image description here]()
Использование кавычек было моим решением.
Ответ 5
Если контроллер будет внутренне использовать javascript для оценки условия, но это может привести к снижению производительности.
Лучшим вариантом (по умолчанию, начиная с JMeter 4, см. Https://bz.apache.org/bugzilla/show_bug.cgi?id=61675), является проверка " интерпретировать условие как выражение переменной? ", А затем в поле условия есть 2 варианта:
- Вариант 1. Используйте переменную, которая содержит истину или ложь. Например, если вы хотите проверить, был ли последний образец успешным, вы можете использовать
$ {JMeterThread.last_sample_ok}
![If Controller starting with JMeter 3.4]()
или любая переменная, которую вы хотите, которая содержит истину/ложь
$ {MYVAR}
- Вариант 2: Используйте функцию (рекомендуется $ { __jexl3()}) для вычисления выражения, которое должно возвращать true или false. Например, если COUNT равен 1:
$ {__ jexl3 ("$ {COUNT}" == "1",)}
ИЛИ ЖЕ
$ {__ jexl3 ($ {COUNT} == 1,)}
![If Controller with expression starting with JMeter 3.4]()
Начиная с 4.0, если вы не используете "интерпретировать условие как выражение переменной?", Появится предупреждение в КРАСНОМ:
![If Controller using javascript in JMeter 3.4]()
Если вы хотите узнать больше о JMeter и тестировании производительности, эта книга может вам помочь.
Ответ 6
Как сказал Джерри, вам нужно проверить свою переменную
${my_var} == 'value'
Но будьте осторожны с Пользовательскими переменными '
Обратите внимание, что все элементы UDV в план тестирования - независимо от того, где они находятся - обрабатываются в начале.
В основном это означает, что вы не можете определить "Пользовательские переменные" внутри "Контроля If". Посмотрите на "BeanShell".
Ответ 7
Заменить:
$ {My_variable} == '1'
с
"$ {my_variable}" == "1"
Ответ 8
![Check the image]()
Я использовал ${code_g1}== 200
в состоянии, и это сработало для меня.