Как сопоставить разные значения в регулярном выражении с несколькими совпадениями с помощью JMeter-Correlation Recorder?

У меня проблема в JMeter, которую я не могу понять, как решить.

Ситуация:

  • Я хочу загрузить тестовый сайт ASP.NET.
  • bzm - Регистратор корреляции, используемый для записи и корреляции
  • ScriptResource и WebResource имеют несколько вхождений

Теперь я использовал следующий RegEx для извлечения значений ScriptResource: ‹script src=(.+/ScriptResource.+?). Затем я сохранил 3 совпадающих значения в 3 разных переменных. Но я не могу заменить значения в найденном порядке. Пример: Первое совпадение: хранится в: AspNet_ScriptResource Второе совпадение хранится в: AspNet_ScriptResource_1 Третье совпадение хранится в: AspNet_ScriptResource_2

Все три совпадения имеют разные значения, невозможно вставить одно значение во все 3 совпадения. Поэтому мне нужно записать значение из AspNet_ScriptResource в первое совпадение (matchNr=1). AspNet_ScriptResource_1 во втором совпадении (matchNr = 2) и AspNet_ScriptResource_2 в третьем совпадении (matchNr = 3).

Но в Правилах корреляции (в Рекордере корреляции) в разделе Замена корреляции нет возможности выбрать в какой matchNr писать.

Рекордер корреляции: правила корреляции

Я пытался использовать препроцессор BeanShell с циклом for, но нашел способ писать только в журналы, а не в тело ответа.

Есть ли способ решить эту проблему с помощью плагина Correlation Recorder? Если нет, какие варианты у меня есть для обработки такого сценария?

Спасибо за вашу помощь! :)


person lekxy    schedule 26.11.2020    source источник


Ответы (1)


Вы можете отправить запрос на улучшение bzm — Correlation Recorder через форум поддержки подключаемых модулей JMeter или если вы являетесь клиентом BlazeMeter и нуждаетесь в этой функции как можно скорее, вы можете откройте заявку в службу поддержки для реализации этой функции.

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

Что касается подхода Beanshell:

  1. Подставлять данные ответа можно, но не с помощью Препроцессора, это нужно делать через Постпроцессор с использованием prev.setResponseData() функция
  2. Начиная с JMeter 3.1, вы должны использовать тестовые элементы JSR223 и язык Groovy для сценариев
  3. Если вам нужно изменить данные запроса, а не данные ответа, вы можете сделать это через sampler.getArguments()
person Dmitri T    schedule 26.11.2020