Невозможно передать динамический ответ jmeter post call на получение вызова

#json #regex #post #jmeter #dynamic-variables

#json #регулярное выражение #Публикация #jmeter #динамические переменные

Вопрос:

я новичок в JMeter. Я ударил по нескольким вызовам «post» с разными наборами данных. Каждый post-вызов приводит к уникальному идентификатору в качестве ответа. Я хочу снова передать каждый уникальный идентификатор для вызова «get» с интервалом в 5 минут. Я извлек уникальный идентификатор с помощью экстрактора регулярных выражений. Проблема в том, что я могу передать только последний уникальный идентификатор для вызова «get» вместо каждого уникального идентификатора. Есть ли способ, которым мы можем создать динамический ключ регулярного выражения и передать значение для дальнейшего использования? введите описание изображения здесь

Ответ №1:

Конечно, есть несколько способов, которыми вы могли бы решить эту проблему. Чтобы назвать пару:

  1. Фиксируйте каждый из разных идентификаторов POST response как уникальные переменные, которые затем могут использоваться в будущих вызовах GET, каждый из которых запрашивает один из уникальных идентификаторов. Пример: ID1, ID2, ID3 и т.д…
  2. Создайте отдельные группы потоков для каждого из этих сценариев POST / GET. Переменная JMeter будет локальной только для группы потоков, поэтому они будут изолированы друг от друга. Это также обеспечило бы возможность их одновременного запуска, если это необходимо.
  3. Использование переменной (количество сортировок) для увеличения в каждом сообщении и добавление ее к общему имени переменной. Пример: 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:

Вероятно, самым простым способом будет использование увеличивающегося постфикса, например:

  1. Добавьте функцию __counter() в качестве постфикса для вашего «ссылочного имени», например

    постфикс счетчика

  2. Каждый раз, когда будет вызываться средство извлечения регулярных выражений, будет создаваться новая batchid_N переменная, где N это увеличивающееся число, создаваемое функцией __counter()

    Переменные, полученные из counter

  3. Вы сможете получить доступ к значениям этих переменных как ${batchid_1} ${batchid_2} , и т.д. где требуется. Существует также возможность использовать другую функцию или переменную JMeter в качестве постфиксного значения через функцию __V(), например:

    • ${__V(batchid_${yourVar})} — объединить префикс «batchid_» с ${yourVar} переменной

    • ${__V(batchid_${__counter(,)})} — объединить префикс «batchid_» с функцией __counter()

Смотрите серию статей «Как использовать функции JMeter» для получения дополнительной информации о вышеуказанных и других функциях JMeter.