Как разобрать ответ Jmeter и сделать новый запрос
Я использую jMeter для тестирования приложения Tomcat. Мне нужно разобрать ответ jMeter и сделать второй запрос. Первый ответ выглядит так:
<responseData class="java.lang.String"><html>
<body>
ERROR=0
MSG=N/A
FILELIST=1555;1340778737370;1526545487;
VERSION=1.002
URL=https://192.168.100.46/updserver/download?action=signature_download&token=
INTERVAL=0
</body>
</html>
</responseData>
Мне нужно извлечь переменные "FILELIST" и "URL" и вставить их в новый URL:
https://192.168.100.46/updserver/download?action=signature_download&token=1555;1340778737370;1526545487;
Я знаю, что для этого есть какой-то постпроцессор, но понятия не имею, как это сделать. Кстати, второй запрос загрузит какой-нибудь файл из сервлета Tomcat, есть ли способ позволить jMeter просто загрузить поток, но без записи в физический файл? Чтобы я мог выполнить нагрузочный тест на мой сервлет.
2 ответа
Итак, вы уже знаете, как извлечь URL из вашего ответа, я описал, как в моем предыдущем ответе:
Но здесь я просто остановлюсь на этом. Итак, у вас есть свой сэмплер, и вы уже получили ${url}
, Теперь вам нужно FILELIST
и собрать новый URL.
Предполагая, что у вас уже есть запрос и URL-экстрактор на месте. Добавить новый Regular expression extractor
,
Right click on request sampler -> Post Processors -> Regular Expression Extractor
Reference Name : FILELIST
Regular Expression : FILELIST=(\S+)
Template : $1$
Match No. (0 for Random): 1
Итак, теперь у вас есть 1 сэмплер запроса и 2 экстрактора регулярных выражений. Вам нужно добавить дополнительный постпроцессор, чтобы собрать новый URL.
Right click on request sampler -> Post Processors -> BSF PostProcessor
Выбрать beanshell
из списка языков под Script language
и в большом поле Script:
вставьте это:
vars.put("NEW_URL", "${__javaScript('${url}'.replace('
'\,'${FILELIST}'))}");
И теперь у вас есть ${NEW_URL}
использовать дальше в своих тестах.
Существует всегда более чем один способ решения проблем, этот лайнер выглядит действительно некрасиво, но он служит цели.
В моем тесте результат такой, как вы просили (Debug Sampler):
url=https://192.168.100.46/updserver/download?action=signature_download&token=
FILELIST=1555;1340778737370;1526545487;
NEW_URL=https://192.168.100.46/updserver/download?action=signature_download&token=1555;1340778737370;1526545487;
РЕДАКТИРОВАТЬ:
Я думаю, я не понимаю, как вы называете свои переменные. Но конечный результат тот, который вы описали в своем вопросе. Пожалуйста, смотрите тест.jmx, приложенный с рабочим примером:
http://www.filefactory.com/file/1q7nfitmh4qd/n/so_11309469_jmx
Это файл jmeter .jmx, работающий с версией jmeter 2.6+
Для захвата части ответа используйте Regular Expression Extractor.
Вы можете проверить свое выражение регулярного выражения на данных ответа, используя прослушиватель ViewResultsTree. Просто выберите Regexp tester в раскрывающемся списке внизу левой панели в вашем слушателе ViewResultsTree.