Как в JMeter и BeanShell сделать строчную переменную? - PullRequest
2 голосов
/ 21 января 2011

В пользовательских параметрах JMeter, как я могу сделать переменную в нижнем регистре?

Левый столбец

my_lowercase_variable

Правый столбец

${__BeanShell('${my_variable}'.toLowerCase())}  //fails

или

${__javaScript('${my_variable}'.toLowerCase())}  //fails

Такой, что ${my_lowercase_variable} является строчным ${my_variable}Попробовал с цитатой и без и убегал и тому подобное.Неудачно.Любые хитрости или советы приветствуются.

Ответы [ 5 ]

3 голосов
/ 22 января 2011

Примечание для себя.

Оказывается, что в BeanShell Sampler используется две строки, а не команда __BeanShell.К сожалению, не совсем в примерах.

Я добавил сэмплер BeanShell в группу потоков, затем создал переменную.Никаких параметров в форме не потребовалось, только два скрипта лайнера ниже.Пока я не изменяю переменную, я могу скопировать данные в другую переменную, вместо этого изменить их, а затем сделать ссылку на значение в том месте, где это необходимо.

Сначала определите переменную в некоторых пользовательских параметрах, например:

Name: my_initial_reference 
Value: ITS IN CAPS

Добавьте бобовый выборщик в пользовательские настройки или список определений (только что это не дочерний процесс)

Введите:

String blah = "${my_initial_reference}"; // 
vars.put("blah", blah.toLowerCase());  //${blah} = "its in caps" now available

Теперь с помощью пар имя / значение я могу сопоставить $ {blah} в качестве значения с любым именем процесса, которое ему требуется.

Обратите внимание, чтоОтвет отладки будет по-прежнему отображать начальное значение в заглавных буквах, но вы также увидите blah = его в заглавных буквах, что я и хотел использовать.

2 голосов
/ 09 октября 2015

${__javaScript('${foobar}'.toLowerCase())} работает работает. Если вывод ${foobar} вместо desired value, это означает, что переменная не была объявлена ​​

Обратите внимание, что переменные определены только после компонент "Определяемая пользователем переменная" был проанализирован . Переменные не могут быть повторно использованы в одном компоненте «Пользовательская переменная», например ::1012*

enter image description here

Вторая строка в этом изображении не сможет ссылаться на переменную my_variable в первой строке. Чтобы иметь возможность ссылаться на первую переменную, необходимы два «Пользовательские переменные» компонента. Первая переменная будет в первом компоненте, а вторая переменная во втором, например ::1010

enter image description here

При этом ${my_lower_case_variable} будет успешно преобразован в some value.


${__BeanShell(<b>"</b>${my_variable}<b>"</b>.toLowerCase())} тоже работает. (Обратите внимание, что для Bean Shell требуется двойных кавычек. Код в вашем вопросе использует одинарные кавычки.)

Другой способ - использовать vars.get:

  • ${__javaScript(vars.get('my_variable').toLowerCase())}

  • ${__BeanShell(vars.get("my_variable").toLowerCase())}

2 голосов
/ 06 июля 2012

Просто можете добавить функцию

${__lowercase(${VAL},VALUE)}
${__uppercase(${VAL},VALUE)}

Примечание: VAL может быть коррелированным или параметризованным значением (например, VAL = TO LOWER или VAL = TO UPPER). Мы можем использовать эту функцию в beanshell (препроцессор / постпроцессор / сэмплер). Версия Jmeter с использованием (2.6).

Может использовать его в любом месте скрипта как $ {VALUE}.

2 голосов
/ 25 мая 2011

Хмммм, твой код оболочки боба не работает для меня. Возвращен сэмплер оболочки бобов:

Response code: 500
Response message: org.apache.jorphan.util.JMeterException: Error invoking bsh method: eval  Sourced file: inline evaluation of: ``String blah = AAP;  vars.put("blah", blah.toLowerCase());  //${blah} now availab . . . '' : Typed variable declaration : Void initializer

Я добавил две двойные кавычки, чтобы решить это:

String blah = "${my_initial_reference}";
vars.put("blah", blah.toLowerCase());  //${blah} now available
0 голосов
/ 21 января 2011

Функции Beanhell и JavaScript в этом использовании не будут работать, поскольку они не импортируют пакеты, необходимые для использования .toLowerCase.

Если вам действительно нужно использовать функцию для преобразования регистра (вместо того, чтобы сначала объявлять их как строчные), вам может понадобиться написать полный скрипт постпроцессора для скорлупы бобов, чтобы импортировать необходимые пакеты.

...