JMeter: возможно ли добавить сэмплер HTTP Request во время выполнения? - PullRequest
0 голосов
/ 28 февраля 2019

У меня есть HTTP-запрос, который возвращает объект JSON, который содержит несколько URL-адресов (в основном это ресурсы изображения).Я не знаю количество URL-адресов, которые будут в ответе JSON, и это число может меняться с течением времени.Мне нужно создать HTTP-запрос для каждого из полученных URL-адресов.

Можно ли создавать сэмплеры HTTP-запросов при выполнении потока JMeter?Есть ли другое решение, которое можно посоветовать мне сделать, чтобы отправлять HTTP-запросы на список URL-адресов?

Спасибо

1 Ответ

0 голосов
/ 28 февраля 2019
  1. Добавьте JSON Extractor как дочерний элемент основного запроса и придумайте выражение JSON Path , чтобы извлечь ссылки на изображения и любые другие URL-адреса, на которые вы хотели бы попасть
  2. Добавьте ForEach Controller и настройте его для чтения справочного имени JMeter из шага 1 и установки выходной переменной в любое значимое значение
  3. Добавить HTTP Request сэмплер как дочерний элемент ForEach Controller и настройка его на использование выходной переменной
  4. Все, JMeter будет запускать сэмплер HTTP Request для каждого URL, присутствующего в исходном JSON

  • Если у вас есть следующий JSON:

    {
      "urls": [
        {
          "url": "http://example.com"
        },
        {
          "url": "http://jmeter.apache.org"
        },
        {
          "url": "http://jmeter-plugins.org"
        }
      ]
    }
    
  • Вы можете извлечь URL-адреса в переменные JMeter, используя следующую настройку JSON Extractor:

    enter image description here

    это даст вам следующие переменные JMeter:

    url_1=http://example.com
    url_2=http://jmeter.apache.org
    url_3=http://jmeter-plugins.org
    url_matchNr=3
    

    enter image description here

  • теперь, если вы добавляете ForEach Controller иd настроить его следующим образом:

    enter image description here

  • вы сможете ссылаться на URL-адреса как ${current_url} в образце запроса HTTP, которыйявляется потомком контроллера ForEach

    enter image description here

...