Удаленка для jenkins+selenide+selenoid+allure+docker спецов на 2-3 часа в день. 100% remote! Присоединиться к проекту

Extract value using regex, modify it and send in new request

csv
regexp
jmeter
http
Теги: #<Tag:0x00007fedc07bf830> #<Tag:0x00007fedc07bf600> #<Tag:0x00007fedc07bf3f8> #<Tag:0x00007fedc07bf218>

#1

Подскажите пожалуйста как справиться с такой ситуацией:
jmeter читает мой csv file с набором GET и POST реквестов и выполняет их.

Первый GET request имеет html response в котором находится нужное мне значение - clientKey = "7413283063809473468"
В пайтоне я его считываю и модифицирую так -
clientKey = re.search('clientKey = "-?\d+"', response.text).group().replace('clientKey = ',"").replace('"',"")
Как такую же операцию провернуть в jmetere ?

И следующий шаг это я должен модифицировать POST request (https://mysite.com/viewer/-3621038377494762941/bla/bla/bla) из моего csv файлa и отправить
POST https://mysite.com/viewer/-7413283063809473468/bla/bla/bla


(Павел) #2

Первый GET request имеет html response в котором находится нужное мне значение - clientKey = “7413283063809473468”
В пайтоне я его считываю и модифицирую так -
clientKey = re.search(‘clientKey = “-?\d+”’, response.text).group().replace(‘clientKey = ‘,"").replace(’"’,"")
Как такую же операцию провернуть в jmetere ?

Можно к семплеру добавить JSR223 PostProcessor на groovy, например:

String htmlReponse = prev.getResponseDataAsString()
String clientKey = (htmlResponse =~ /clientKey = "(\d+)"/).collect { all, key -> key }[0]
vars.put('CLIENT_KEY', clientKey)

после этого в JMeter переменную CLIENT_KEY запишется то, что было распарсено по регекспу clientKey = "(\d+)" (первое вхождение)
2.

И следующий шаг это я должен модифицировать POST request (https://mysite.com/viewer/-3621038377494762941/bla/bla/bla) из моего csv файлa и отправить
POST https://mysite.com/viewer/-7413283063809473468/bla/bla/bla

Здесь не очень понятно что нужно. Если вы получили из предыдущего шага CLIENT_KEY, то для следующего семплера с POST реквестом можно указать path как /viewer/-${CLIENT_KEY}/bla/bla/bla


#3

Спасибо большое это как раз то что я искал, вот только синтаксис у меня вот такой заработал только -

def response = prev.getResponseDataAsString();
def clientKey = (response =~ /clientKey = "(-?\d+)"/).collect { all, key -> key }[0];
vars.put('CLIENT_KEY', clientKey);