JMeter CSV Dataset Config: как перемещаться по переменным в одном потоке?
Я использую конфигурационный элемент набора данных CSV, который читается из файла следующим образом:
abd
sds
ase
sdd
ssd
cvv
Что, в основном, содержит несколько случайных строк из 3 букв.
Я назначаю их переменной с именем ${random_3}
.
Теперь я хочу использовать значения из этого списка несколько раз в одном потоке, но каждый раз, когда я хочу перейти к следующему. Например, я хочу, чтобы первый сэмплер использовал abd
, второй использовал sds
, затем ase
и т.д. Но если я просто использую ${random_3}
, тогда только первый (abd) используется везде, где он упоминается к. Есть ли способ, который я могу указать для циклического прохождения значений из набора данных CSV в потоке?
Ответы
Ответ 1
Конфигурация набора данных CSV отлично подходит для этого. Все значения должны быть в одном столбце в файле и назначать их переменной, как описано.
Создайте группу тем, которая имеет столько потоков для большого количества пользователей, сколько вы хотите итерации по файлу (т.е. действия по HTTP-запросу). Предполагая, что 1 пользователь, установите количество потоков в 1, количество циклов в 1.
Внутри группы потоков вам нужно будет добавить контроллер Loop Controller или While Controller. Вы указали, что хотите перебрать весь набор данных. Если вы добавите контроллер цикла, вы захотите установить количество циклов на 6, поскольку у вас есть 6 значений, по одному для каждого значения. Альтернативно (и проще для обработки всего файла) добавьте контроллер while вместо Loop Controller и установите ${random_3} в качестве условия while.
Важно правильно установить значения CSV Data Set Recycle on EOF и Остановить поток по EOF. Если вы планируете перебирать файл более одного раза, вы должны установить "Переработать на EOF" на "Истина" (т.е. Проинструктировать jMeter, чтобы вернуться к началу файла CSV). Установите "Stop Thread on EOF" на False, если вы используете контроллер цикла, true, если вы используете контроллер while и хотите остановиться после прочтения всего набора данных csv.
Добавьте CSV Data Set Config в качестве дочернего элемента контроллера вместе с HTTP-запросом. Просмотрите результаты, используя любой прослушиватель, который вы хотите использовать.
Ответ 2
Набор данных CSV перемещается через файл только после запуска каждой итерации потоков.
Вы можете использовать Источник исходных данных PreProcessor для перемещения файла throuhg с каждым запросом, что ваше решение.
Ответ 3
Обратите внимание, что вам нужно иметь значения для данного имени переменной в том же столбце.
Выполнение: abd sds ase sdd ssd cvv
сильно отличается от
abd
sds
ase
sdd
ssd
cvv
Первый имеет 6 переменных с одним значением каждый; вторая имеет одну переменную с 6 значениями.
Ответ 4
Update:
CSV Dataset, похоже, не подходит для этой цели.
В итоге я создал несколько простых скриптов beanshell, которые при необходимости создают случайное 1, 2 или 3 буквенное слово, а также другое, которое читает случайные слова из большого набора. Таким образом, каждый раз, когда они называются, они дают случайное значение. Они называются так:
${__BeanShell(getRandomStr(3))}
или
${__BeanShell(getRandomWord())