Jmeter - Как прочитать несколько значений, возвращаемых GET-запросом в виде массива в формате Json, и записать его в файл CSV - PullRequest
0 голосов
/ 28 июня 2018

Jmeter - у меня есть несколько значений (приблизительно 250 значений как минимум), возвращаемых из запроса на получение в виде массива в формате json, мне нужно передать каждое значение в массиве в качестве параметра в следующем запросе GET

Запрос 1

> Get http://xxx/store1?

Ответ в формате json выглядит следующим образом

{"store1":"peirre","inventorylist":["item1","item2","item3"..........."item250"]}

Мне нужно будет использовать каждый элемент в следующем запросе GET, например, чтобы получить такие характеристики, как цена, доступное количество, место производства и т. Д.,

Запрос 2

Get https://xxx/store1/item1?
Get https://xxx/store1/item2?
Get https://xxx/store1/item3?

Было бы легко, если бы я мог прочитать ответ и записать каждое значение в массиве в файл CSV, чтобы мой следующий запрос get просто прочитал файл CSV и запустил все запросы

Есть ли способ добиться этого ???

Заранее спасибо

Ответы [ 2 ]

0 голосов
/ 28 июня 2018
  1. Добавьте Json Extarctor к первому запросу на получение со следующими свойствами enter image description here

2.Добавьте постпроцессор JSR223 и инициализируйте счетчик, как показано ниже enter image description here

  1. Добавьте контроллер while и поместите запрос на получение в контроллер while.

добавить следующее условие

${__javaScript(parseInt(vars.get("counter"))<=parseInt(vars.get("List_matchNr")))}

как показано ниже

enter image description here

  1. Во второй запрос get добавьте постпроцессор JSR223 и увеличьте счетчик, как показано ниже

    int counter = Integer.parseInt (vars.get ("counter")) +1;

    vars.put ( "счетчик", Integer.toString (счетчик));

enter image description here

  1. Используйте ${__V(List_${counter})} для замены жестко закодированного значения

Этот цикл будет проходить по номеру совпадения и отправлять запрос с каждым элементом на сервер

enter image description here

Для получения дополнительной информации о цикле while, пожалуйста, перейдите по ссылке

0 голосов
/ 28 июня 2018
  1. Добавить JSON Extractor как дочерний элемент запроса, который возвращает вышеуказанный JSON
  2. Настройте его следующим образом:

    • Имена созданных переменных: что-либо значимое, т.е. item
    • Выражения пути JSON: $.inventorylist.*
    • Матч №: -1
  3. Добавьте ForEach Controller после первого сэмплера HTTP-запроса и настройте его следующим образом:

    • Префикс входной переменной: что бы вы ни использовали в качестве «Имен созданных переменных» в JSON Extractor, т.е. item
    • Имя выходной переменной: что-либо значимое, т.е. current_item
  4. Добавьте сэмплер HTTP Request в качестве дочернего элемента контроллера ForEach и используйте https://xxx/store1/${current_item} в поле «Путь» - он будет перебирать все элементы «item»

    JMeter JSON Extractor and ForEach Controller

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...