Как использовать ответы из запроса Jmeter JDBC в HTTP-запросе
-
21-12-2019 - |
Вопрос
Вот моя ситуация:
Я хочу сделать это:
У меня есть список URL-адресов в базе данных MySQL, по которым я хочу получить доступ с помощью HTTP-запроса, чтобы узнать, является ли ответ кодом состояния HTTP 404 или нет.
Я сделал это:
- Добавлен и сконфигурирован элемент конфигурации JDBC.
- Добавлен и настроен сэмплер запросов JDBC.По сути, оператор select, который возвращает таблицу с 8 столбцами.Я предоставил 8 переменных, разделенных запятыми, для поля "Имена переменных", чтобы результаты запроса JDBC можно было идентифицировать с помощью этих имен переменных.
- Создал пробоотборник HTTP-запросов, который использует одну из этих переменных ${url} в поле "Имя сервера или IP".
Хотя запрос JDBC работает безупречно и возвращает таблицу с кучей строк, проблема заключается в том, что программа выборки HTTP-запросов никогда не извлекает переменную из результата запроса JDBC.HTTP-запрос выглядит следующим образом в "Дереве просмотра результатов":
GET http://${url}/
Я пробовал эти решения:
- Добавьте прослушиватель "Сохранять ответы в файл" к запросу JDBC.При этом создается файл типа ".plain", а не CSV.Если бы это был CSV-файл, я мог бы использовать этот CSV-файл, создав конфигурацию набора данных CSV.Итак, эта попытка провалилась.
- Я попытался принудительно ввести имя файла в приведенной выше попытке, чтобы всегда использовать 'C:\JMETERTest\data.csv'.Но в итоге создается новый файл с именем 'C:\JMETERTest\data.csv1.plain'.Эта попытка тоже провалилась.
Я попытался сослаться на столбец URL как ${url_1} в поле Имени сервера HTTP-запроса.Это сработало.Но проблема сейчас в том, что в дереве результатов все запросы отправляются по URL-адресу только из первой строки результирующего набора.Я вижу, что это из-за номера строки '_1', указанного в ${url_1} выше.Я могу использовать это, если кто-нибудь может предложить способ параметризации '_1' в переменную, которую я могу перебирать (вероятно, используя элемент 'Counter').Я создал элемент конфигурации счетчика с ссылочным именем 'loopCounter'.И использовал это в поле Имя сервера HTTP-запроса:
${url_("${loopCounter}")}
Но теперь мои HTTP-запросы выглядят более хромыми:
GET http://${url_("${loopCounter}")}/
Это тоже не сработало.
Решение 3 выглядит более выполнимым, только если бы я мог разрешить параметризацию номера строки.Я также открыт для предложений плагина JMeter.Я буду обновлять все остальное, что я попробую, по мере того, как мы продолжим.
P.S.Пожалуйста, дайте мне знать, если мой вопрос в любом случае будет неясен.
Решение
Вы пробовали обернуть HTTP-сэмплер в контроллер ForEach (родительский), где переменной для контроллера является переменная URL, полученная из сэмплера JDBC?
Кроме того, выходной переменной в ForEach будет переменная, которую вы сейчас используете в HTTP sampler.
Таким образом, он будет выполнять итерацию по каждой переменной от начала индекса до конца и запускать сэмплер каждый раз один раз.
Другие советы
В прослушивателе "Сохранять ответы в файл" установите флажки "Не добавлять суффикс и префикс".Проверка этих двух параметров гарантирует, что вы получите точное имя файла журнала.