JMeter - определяемая пользователем переменная, не меняющая своего значения - PullRequest
0 голосов
/ 07 декабря 2018

У меня есть план тестирования, содержащий одну группу потоков с одним сэмплером HttpRequest, JRS223PreProcessor и одну конфигурацию набора данных csv.Мне нужно прочитать из csv во время выполнения текущее значение столбца 2 и использовать его в моем препроцессоре JSR223.Для этого я определил переменную в плане тестирования:

name $ {__ CSVRead (C: /Users/marial/Desktop/csvs/csv_hotelCodeReq.txt,2)

в JSR223PreProcessor Я воспринимаю это так:

String name= new String(vars.get("name"));

Я ожидаю, что это значение будет меняться в каждой прочитанной строке, но это не так, оно всегда принимает первое встреченное значение.Кто-нибудь знает почему?

Точнее, если у меня есть файл csv:

1,2, firstName1: lastName1

3,2, firstName2: lastName2

и число циклов = 2, пользователи = 1, чем значения имени:

loop1: firstName1: lastName1

loop2: firstName1: lastName1

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

1 Ответ

0 голосов
/ 07 декабря 2018

Согласно Определяемым пользователем переменным документации:

Обратите внимание, что все элементы UDV в плане тестирования - независимо от того, где они находятся - обрабатываются в начале.

Таким образом, ваша __ CSVRead () функция оценивается только во время запуска теста и только один раз

Решение было бы переместить функцию в "Параметры""раздела препроцессора JSR223 , и вы сможете получить доступ к выводу функции как Parameters в вашем скрипте Groovy, например:

String name = Parameters

Демонстрация:

enter image description here

Таким образом, функция __CSVRead () будет выполняться каждый раз, когда вызывается препроцессор JSR223.Прочтите Apache Groovy - почему и как его использовать статья, чтобы узнать больше о скриптах Groovy в JMeter

...