Получите все предыдущие результаты сэмплера (перенаправления) в утверждении JMeter JSR223

Я использую JMeter для одного API. URI, который я нажимаю (Test API-0), вернет 302 Found и перенаправит его на Test API-1, который снова вернет 302 Found и перенаправит его на Test API-2. Тест API-2 вернет 200 OK, если все в порядке.

введите описание изображения здесь

Я хочу получить протокол, хост, путь и код ответа Test API-0, Test API -1 и Test API-2.

На языке JSR223 Assertion Groovy я пробовал

def url = prev.getURL();
def protocol = url.getProtocol();
def host = url.getHost();
def path = url.getPath();

log.info('Full URL: ' + url.toString())
log.info('Protocol: ' + protocol )
log.info('host: ' + host )
log.info('path: ' + path )

Но это даст мне только Test API-2 (только последний URI).

Я также пробовал с

log.info("Previous Response URL is: " + ctx.getPreviousResult().getURL());

log.info( "The Sample URL is : " + SampleResult.getUrlAsString() );

Опять тот же результат. Я получаю только Test API-2 (только последний URI).

Как я могу получить все тестовые API-0, 1 и 2?


[ОБНОВЛЕНИЕ 10 дек]:

Рабочее решение, данное пользователем7294900:

В окне утверждения JSR223

import org.apache.jmeter.samplers.SampleResult;

 SampleResult[] subResults = prev.getSubResults();

   subResults.each { it ->  
   def url = it.getURL();
   def protocol = url.getProtocol();
   def host = url.getHost();
   def path = url.getPath();

	  log.info("URL: " + url )
	  log.info("Protocol: " + protocol )
	  log.info("host: " + host )
	  log.info("path: " + path )
   
   }


person keylogger    schedule 08.12.2019    source источник


Ответы (1)


Вы также можете получить вспомогательные результаты, используя prev.getSubResults () и получить данные из массива

 SampleResult[] subResults = prev.getSubResults();

массив, содержащий подрезультаты для этого образца

Вы можете перебирать каждый подрезультат:

subResults.each { it->
   def url = it.getURL());
   def protocol = url.getProtocol();
   def host = url.getHost();
   def path = url.getPath();
}
person user7294900    schedule 09.12.2019
comment
Спасибо. Идея потрясающе работает. Но в коде есть ошибки, из-за которых компилятор раздражается. Я поставил рабочие коды внизу своего вопроса. Большое спасибо. - person keylogger; 10.12.2019