Переменная счетчика не увеличивается при обращении к ней в Groovy JSR223 Sampler - PullRequest
0 голосов
/ 01 мая 2018

У меня есть простой контроллер цикла и внутри него элемент конфигурации Counter и сэмплер JSR223, выполняющий код Groovy. Мой счетчик установлен на 0, с шагом 1 до максимум 3 и установлен в переменную с именем «idx».

В моем сэмплере JSR223 я записываю значение idx, используя log.info(${idx}); - оно всегда печатает первое значение итерации (в моем случае 0) для каждой итерации цикла.

Я отключил этот сэмплер JSR223 и добавил сэмплер BeanShell, выполнив тот же лог-оператор, log.info(${idx});, и он правильно увеличивается - я получаю значения 0, 1, 2 для итерации.

Мне нужно взять JSON, сопоставить их с объектами, выполнить некоторые настройки, а затем сопоставить их с JSON. Существуют классы JSONParser, JSONObject и JSONArray, которые, кажется, работают в пробоотборнике BeanShell, но мне гораздо удобнее работать с классами Groovy JsonSlurper и JsonBuilder, и я бы предпочел использовать их.

Все эти шаги находятся в пределах фрагмента теста, если это имеет значение. У кого-нибудь есть идеи? Это ошибка?

1 Ответ

0 голосов
/ 02 мая 2018

Никогда см. Функция или переменные JMeter непосредственно в сценариях, либо используйте раздел «Параметры» для этого, например:

JMeter Groovy Parameters

Или используйте vars сокращение, которое обозначает экземпляр класса JMeterVariables, например:

log.info(vars.get('idx'))

JMeter Groovy Vars Print Value

Причины в:

  • Функция или переменная могут преобразоваться во что-то, что приведет к сбою компиляции или непредвиденному поведению
  • Ссылка на переменные и / или функции предотвращает кэширование скомпилированных скриптов Groovy, что негативно влияет на производительность
  • Ссылки на функции и / или переменные могут конфликтовать с Groovy GString Template

См. Apache Groovy - почему и как его использовать * Статья 1034 * для получения дополнительной информации об использовании сценариев Groovy с элементами JSR223 в тестах JMeter.

...