Как разобрать ответ Jmeter и сделать новый запрос

Я использую jMeter для тестирования приложения Tomcat. Мне нужно разобрать ответ jMeter и сделать второй запрос. Первый ответ выглядит так:

<responseData class="java.lang.String">&lt;html&gt;&#xd;
&lt;body&gt;&#xd;
ERROR=0&#xd;
MSG=N/A&#xd;
FILELIST=1555;1340778737370;1526545487;&#xd;
VERSION=1.002&#xd;
URL=https://192.168.100.46/updserver/download?action=signature_download&amp;token=&#xd;
INTERVAL=0&#xd;
&lt;/body&gt;&#xd;
&lt;/html&gt;&#xd;
</responseData>

Мне нужно извлечь переменные "FILELIST" и "URL" и вставить их в новый URL:

https://192.168.100.46/updserver/download?action=signature_download&amp;token=1555;1340778737370;1526545487;&#xd;

Я знаю, что для этого есть какой-то постпроцессор, но понятия не имею, как это сделать. Кстати, второй запрос загрузит какой-нибудь файл из сервлета Tomcat, есть ли способ позволить jMeter просто загрузить поток, но без записи в физический файл? Чтобы я мог выполнить нагрузочный тест на мой сервлет.

2 ответа

Решение

Итак, вы уже знаете, как извлечь URL из вашего ответа, я описал, как в моем предыдущем ответе:

/questions/16869957/kak-razobrat-otvet-sample1-dlya-sozdaniya-novogo-obraztsa-v-jmeter/16869962#16869962

Но здесь я просто остановлюсь на этом. Итак, у вас есть свой сэмплер, и вы уже получили ${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('&#xd;'\,'${FILELIST}'))}");

И теперь у вас есть ${NEW_URL} использовать дальше в своих тестах.

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

В моем тесте результат такой, как вы просили (Debug Sampler):

url=https://192.168.100.46/updserver/download?action=signature_download&amp;token=&#xd;
FILELIST=1555;1340778737370;1526545487;&#xd;
NEW_URL=https://192.168.100.46/updserver/download?action=signature_download&amp;token=1555;1340778737370;1526545487;&#xd;

РЕДАКТИРОВАТЬ:

Я думаю, я не понимаю, как вы называете свои переменные. Но конечный результат тот, который вы описали в своем вопросе. Пожалуйста, смотрите тест.jmx, приложенный с рабочим примером:

http://www.filefactory.com/file/1q7nfitmh4qd/n/so_11309469_jmx

Это файл jmeter .jmx, работающий с версией jmeter 2.6+

Для захвата части ответа используйте Regular Expression Extractor.

Вы можете проверить свое выражение регулярного выражения на данных ответа, используя прослушиватель ViewResultsTree. Просто выберите Regexp tester в раскрывающемся списке внизу левой панели в вашем слушателе ViewResultsTree.

Другие вопросы по тегам