JMeter- извлекать несколько переменных из ответа JSON и сохранять их в файле CSV

Я видел несколько сообщений, связанных с этим, но я не смог найти близкого соответствия своему сценарию, поэтому разместил его как новый вопрос.

У меня есть ответ ниже JSON

{
  "myshop": [
    { 
      "url": "test1",
      "hits": 1000
    },
    { 
      "url": "test2",
      "hits": 2000
    },
    { 
      "url": "test3",
      "hits": 3000
    }
  ]
}

Я хотел бы извлечь каждый из URL, соответствующие ему хиты, и сохранить его в файле CSV, в этом случае это будет 3 строки в файле CSV

test1,1000
test2,2000
test3,3000

но не смог добиться успеха в этом. Мой экстрактор JSON:

$.. url; $.. совпадет с номером совпадения -1

но он выбирает все URL-адреса, но любое случайное значение хитов. Кроме того, я смог использовать для каждого контроллера одну переменную для извлечения из JSON, записать его в CSV с помощью постпроцессора BeanShell, но это не работает в этом случае. Любые указатели будут полезны. Я проверил, что было несколько ответов с JSR223 Post, но это не охватывало этот проблемный сценарий.

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

1 ответ

Решение
  1. Добавьте JSR223 PostProcessor как дочерний элемент запроса, который возвращает вышеуказанный JSON
  2. Поместите следующий код в область "Сценарий":

    new groovy.json.JsonSlurper().parse(prev.getResponseData()).myshop.each { entry ->
        new File('entries.csv') << entry.get('url') << ',' << entry.get('hits') << System.getProperty('line.separator')
    }
    
  3. Вот и все, как только вы запустите свой тест entries.csv файл будет сгенерирован в папке "bin" JMeter, содержащей информацию в требуемом формате.

Рекомендации:


Также имейте в виду, что подход будет надежно работать, учитывая, что код выполняется максимум с 1 потоком за раз (т.е. убедитесь, что используется контроллер критической секции). В противном случае рассмотрите возможность переключения на Примеры переменных и Гибкий File Writer.

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