В Jmeter и Beanshell, как я могу сделать переменную нижнюю часть регистра?
-
15-10-2019 - |
Вопрос
В пользовательских параметрах JMeter, как я могу сделать переменную нижнюю часть регистра?
Левый столбец
my_lowercase_variable
Правый столбец
${__BeanShell('${my_variable}'.toLowerCase())} //fails
или же
${__javaScript('${my_variable}'.toLowerCase())} //fails
Так что ${my_lowercase_variable}
является строчным ${my_variable}
. Анкет Попробовал с цитатой, без и сбежав и тому подобное. Неудачно. Любые уловки или советы приветствуются.
Решение
Примечание к себе.
Оказывается, это два лайнера в сэмплере Beanshell, а не команда __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} в качестве значения любого имени процесса, требующего.
Обратите внимание, что ответ отладки по -прежнему покажет начальное значение в Caps, но вы также увидите Blah = его в Caps, что я и хотел использовать.
Другие советы
Хмммм, ваш код оболочки бобов не работал для меня. Сэмплер оболочки бобов вернулся:
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
Просто может добавить функцию
${__lowercase(${VAL},VALUE)}
${__uppercase(${VAL},VALUE)}
Примечание. Val может быть коррелированным или параметризованным значением (Er val = до нижнего или Val = до верхнего). Мы можем использовать эту функцию в Beanshell (предварительный процессор/постпроцессор/пробоотборник). Версия JMeter с использованием (2.6).
Может использовать его, где бы мы ни захотели в скрипте как $ {value}.
${__javaScript('${foobar}'.toLowerCase())}
делает Работа. Если выход ${foobar}
вместо desired value
, это означает, что переменная не была объявлена
Обратите внимание, что переменные определены только после Компонент «Пользовательская переменная» была проанализировано. Анкет Переменные не могут быть использованы повторно в одном компоненте «Пользовательская переменная», например:
Вторая строка на этом изображении не сможет ссылаться на переменную my_variable
в первом ряду. Иметь возможность ссылаться на первую переменную, два Необходимы компоненты «Пользовательская переменная». Первая переменная будет в первом компоненте, а вторая переменная во второй, например:
С этим, ${my_lower_case_variable}
будет успешно преобразован в some value
.
${__BeanShell("${my_variable}".toLowerCase())}
работает тоже. (Обратите внимание, что оболочка бобов требует двойные кавычки. Код в вашем вопросе использует отдельные кавычки.)
Другой способ - использовать vars.get
:
${__javaScript(vars.get('my_variable').toLowerCase())}
${__BeanShell(vars.get("my_variable").toLowerCase())}
Функции Beanshell и JavaScript в этом использовании не удастся, потому что они не импортируют необходимые пакеты для использования .toLowerCase
.
Если вам действительно нужно использовать функцию для преобразования случая (а затем, а затем объявить их строчными, в первую очередь), вам может потребоваться написать полный сценарий пост-процедуры Beanshell, чтобы импортировать необходимые пакеты.