Параметризация JMeter — Получение погоды для городов с названиями, содержащими пробелы

#jmeter #jmeter-plugins #jmeter-5.0 #openweathermap #jmeter-4.0

Вопрос:

Я попытался получить данные о погоде, используя имя города из openweathermap.org. После запятой стоит код страны. Я ссылаюсь на эту ссылку. введите описание изображения здесь Вот данные CSV из моего файла Excel, включающие код страны, а также запятую:

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

Вот конфигурация набора данных CSV в JMeter:

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

Но когда я попытался запустить с группой из 4 потоков, она возвращает ошибку:

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

Когда я попытался изменить данные CSV без запятой, это работает нормально, за исключением последней строки:

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

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

Вопрос здесь:

  1. Неужели JMeter не может считывать данные CSV с запятыми и пробелами?
  2. Должен ли я изменить файл чтения с CSV на блокнот?
  3. Обратитесь к последней строке CSV-файла, я попытался выполнить поиск в Нью-Йорке (с пробелом), но возвращает ошибку. Согласно openweathermap, поисковая система является гибкой, поэтому я не знаю, почему в данном случае она не может прочитать «Нью-Йорк», но может прочитать город одним словом.

Буду признателен, если кто-нибудь сможет помочь. Спасибо.

Комментарии:

1. Как выглядит ваш CSV-файл, когда вы не открываете в нем Excel? (например, Блокнот) Он может видеть , и просматривать код страны в отдельном столбце.

2. Я просматриваю его в блокноте, пример здесь: «Лондон,Великобритания»

3. Я имею в виду, что если вы проанализируете свой CSV , , он будет учитывать London,UK 2 отдельных столбца: London amp; UK . Также я думаю New York , что это вызывает у вас проблемы, потому что в нем есть пробел, разделяющий 2 слова, и он не будет работать, когда вы передадите это в URI

4. Хорошо. Как это решить?

5. Я полагаю, что у вас есть 2 проблемы: анализ CSV и передача значений в URI. Первый из них можно решить, изменив разделитель в CSV. Вторая проблема может быть решена с помощью кодирования URL-адреса.

Ответ №1:

Вы забыли добавить самый важный скриншот — образец HTTP-запроса

Скорее всего, вы забыли поставить URL Encode галочку рядом со своим q параметром.

Я не думаю, что пространство нуждается в кодировке, однако запятая, безусловно, нужна, поэтому вам нужно переключиться , , либо вручную, либо поставив галочку в вышеупомянутом поле

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

Если у вас возникли проблемы с созданием образцов HTTP-запросов вручную, имейте в виду, что вы можете просто записать соответствующий сетевой вызов с https://openweathermap.org/find страница, использующая HTTP(ы)JMeter Регистратор тестовых сценариев или расширение JMeter Chrome.

Ответ №2:

Вам нужно закодировать значение при отправке символов в виде пробела, используйте __urlencode

   ${__urlencode(${cityname})}
 

Комментарии:

1. Я пытался это сделать, но все еще не получалось. Вот в чем ошибка: java.net.URISyntaxException: Illegal character in query at index 57: http://api.openweathermap.org/data/2.5/weather?q=New York}amp;appid=e6f90e2506dfd0f2dbd1ed2d87fe18ef я заметил, что после Нью-Йорка там появилась дополнительная скобка

2. Как удалить лишний символ скобки?

3. @sabbyna ты уверена, что не добавила лишнего } ?