#json #regex #post #jmeter #dynamic-variables
#json #регулярное выражение #Публикация #jmeter #динамические переменные
Вопрос:
я новичок в JMeter. Я ударил по нескольким вызовам «post» с разными наборами данных. Каждый post-вызов приводит к уникальному идентификатору в качестве ответа. Я хочу снова передать каждый уникальный идентификатор для вызова «get» с интервалом в 5 минут. Я извлек уникальный идентификатор с помощью экстрактора регулярных выражений. Проблема в том, что я могу передать только последний уникальный идентификатор для вызова «get» вместо каждого уникального идентификатора. Есть ли способ, которым мы можем создать динамический ключ регулярного выражения и передать значение для дальнейшего использования? введите описание изображения здесь
Ответ №1:
Конечно, есть несколько способов, которыми вы могли бы решить эту проблему. Чтобы назвать пару:
- Фиксируйте каждый из разных идентификаторов POST response как уникальные переменные, которые затем могут использоваться в будущих вызовах GET, каждый из которых запрашивает один из уникальных идентификаторов. Пример: ID1, ID2, ID3 и т.д…
- Создайте отдельные группы потоков для каждого из этих сценариев POST / GET. Переменная JMeter будет локальной только для группы потоков, поэтому они будут изолированы друг от друга. Это также обеспечило бы возможность их одновременного запуска, если это необходимо.
- Использование переменной (количество сортировок) для увеличения в каждом сообщении и добавление ее к общему имени переменной. Пример: ID $ {count} . Вам нужно будет добавить препроцессор Beanshell для увеличения переменной count в каждом сэмплере HTTP-запроса.
int count = Integer.parseInt(vars.get("count"));
count = count 1;
vars.put("count", count.toString());
Затем вы можете выполнять итерации до достижения значения count в контроллере While при выполнении запросов GET, или вы можете уменьшить количество. Оба будут выполнять одну и ту же функцию при условии выполнения условия в операторе While . Кроме того, вы можете использовать контроллер цикла с количеством итераций в качестве числа итераций и просто иметь другой счетчик, который увеличивается в течение срока службы цикла.
Ответ №2:
Вероятно, самым простым способом будет использование увеличивающегося постфикса, например:
-
Добавьте функцию __counter() в качестве постфикса для вашего «ссылочного имени», например
-
Каждый раз, когда будет вызываться средство извлечения регулярных выражений, будет создаваться новая
batchid_N
переменная, гдеN
это увеличивающееся число, создаваемое функцией __counter() -
Вы сможете получить доступ к значениям этих переменных как
${batchid_1}
${batchid_2}
, и т.д. где требуется. Существует также возможность использовать другую функцию или переменную JMeter в качестве постфиксного значения через функцию __V(), например:-
${__V(batchid_${yourVar})}
— объединить префикс «batchid_» с${yourVar}
переменной -
${__V(batchid_${__counter(,)})}
— объединить префикс «batchid_» с функцией __counter()
-
Смотрите серию статей «Как использовать функции JMeter» для получения дополнительной информации о вышеуказанных и других функциях JMeter.