Jmeter - как обрабатывать повторяющиеся значения, захваченные в RegExpression из того же ответа - PullRequest
0 голосов
/ 11 июня 2018

Как убедиться, что дублирующиеся значения не обрабатываются и не обрабатываются при использовании регулярного выражения?

В моем сценарии мне нужно получить несколько предложений из моего ответа.Но не могу использовать одни и те же предложения снова и снова в рамках транзакции

1 Ответ

0 голосов
/ 12 июня 2018

Есть несколько способов сделать это.Если вы используете значение по умолчанию Regular Expression Extractor, проблема заключается в том, что он создает переменные (например, offer_1, offer_2 и т. Д.), Готовые к выполнению.Было бы проще, если бы он возвратил ArrayList некоторого вида, где мы можем удалить дубликаты.Я собираюсь добавить эти переменные в список в JSR223 (groovy) сэмплер / постпроцессор , а затем преобразовать их обратно в обычные переменные jmeter для использования в обычном потоке сценариев jmeter.

Фрагмент:

Я создал образец сценария в соответствии с вашим описанием, который будет возвращать несколько предложений с некоторыми дубликатами.Ниже приведено состояние переменных jmeter перед постобработкой.

offer_1=RUSSIA
offer_1_g=1
offer_1_g0=offer="RUSSIA"
offer_1_g1=RUSSIA
offer_2=UK
offer_2_g=1
offer_2_g0=offer="UK"
offer_2_g1=UK
offer_3=ICELAND
offer_3_g=1
offer_3_g0=offer="ICELAND"
offer_3_g1=ICELAND
offer_4=USA
offer_4_g=1
offer_4_g0=offer="USA"
offer_4_g1=USA
offer_5=UK
offer_5_g=1
offer_5_g0=offer="UK"
offer_5_g1=UK
offer_6=USA
offer_6_g=1
offer_6_g0=offer="USA"
offer_6_g1=USA
offer_7=USA
offer_7_g=1
offer_7_g0=offer="USA"
offer_7_g1=USA
offer_matchNr=7

Как вы можете видеть выше, в переменных есть дубликаты.Поместите следующий код Groovy в постпроцессор JSR223 с выбранным языком groovy.

// Count of offers extracted by Regular Expression Extractor
def count = Integer.parseInt(vars.get("offer_matchNr"))
// An empty list which will store the offers
def offer_list = []

for (int i = 1; i <= count; i++){
    def offer = vars.get("offer_" + i)
    offer_list.add(offer)
}

// Removes the duplicates in the list
offer_list.unique()

// Following one liner adds new variables but with only unique offers in similar format as jmeter variable.
offer_list.eachWithIndex{ it, index -> vars.put("unique_offer_${index+1}", "${it}")}

После постобработки:

unique_offer_1=RUSSIA
unique_offer_2=UK
unique_offer_3=ICELAND
unique_offer_4=USA

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...