Пример цикла с экстрактором регулярных выражений, результат в JMeter

У меня есть 4 образца:

Первый имеет ответ, аналогичный XML:

<userId>9709262083</userId>
<name>Tom</name>
<relatedTo>9709262080</relatedTo>
<userId>9709262084</userId>
<name>John</name>
<relatedTo>9709262080</relatedTo>
<userId>9709262085</userId>
<name>Michael</name>
<relatedTo>9709262080</relatedTo>

Я создал специальный экстрактор регулярных выражений для получения всех идентификаторов пользователей (-1 в качестве номера совпадения) и правильной работы выборки.

Средство извлечения регулярных выражений

И у меня есть 3 точно таких же образца с только одной разницей в одном параметре (${USER_ID_1}, ${USER_ID_2} и ${USER_ID_3}), но я хотел бы сделать свое решение более универсальным и работать, даже если я не знаю, сколько пользователей будет в отклик.

Как я могу заменить эти 3 образца на 1 образец в каком-то цикле для каждого элемента, найденного в Regular Expression Extractor (не зная точное количество пользователей).

(Я использую JMeter 3.2, я могу увеличить его до 5.1)

Обновление:

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

//e.g. 3 users 
"<User><userId>9709262083</userId></User> <User><userId>9709262084</userId></User> <User><userId>97092620835</userId></User>"

//e.g. 2 users
"<User><userId>9709262083</userId></User> <User><userId>9709262084</userId></User>"

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

${myVariable} += "<User><userId>${userId}</userId></User>"

и тогда я могу просто использовать ${myVariable}


person degath    schedule 09.09.2019    source источник
comment
Обновил мой ответ для достижения ${myVariable} += "<User><userId>${userId}</userId></User>"   -  person user7294900    schedule 10.09.2019


Ответы (3)


ИЗМЕНИТЬ

Ваше новое требование ${myVariable} += "<User><userId>${userId}</userId></User>"

Может быть достигнуто с помощью JSR223 Sampler со следующей строкой

vars.put("myVariable", vars.get("myVariable") + "<User><userId>"+ vars.get("userId") + "</userId></User>");

Вам следует использовать контроллер ForEach. Пример:

должны быть определены следующие переменные:

inputVar_1 = Венди

inputVar_2 = charles

inputVar_3 = Питер

inputVar_4 = Джон

Если возвращаемая переменная задана как returnVar, сбор семплеров и контроллеров под контроллером ForEach будет выполняться 4 раза подряд.

person user7294900    schedule 10.09.2019

Для этого используйте ForEach_Controller.

Практический пример показан ниже:

  1. Test Plan выглядит так:

введите здесь описание изображения

  1. Извлечь идентификатор пользователя с помощью Regular Expression Extractor

введите здесь описание изображения

  1. Используйте For Each Controller для перебора каждого значения

введите здесь описание изображения

  1. Используйте значение для каждого контроллера в своем запросе по своему усмотрению

введите здесь описание изображения

  1. Доказательство его работы

введите здесь описание изображения

person SAIR    schedule 10.09.2019

  1. Лучше использовать XPath Extractor, который позволяет использовать выражения XPath для выборки данных из типов ответов XML / XHTML / HTML.
  2. Вы можете зацикливать переменные, используя ForEach Controller.
person Dmitri T    schedule 10.09.2019