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 ответ
- Добавьте JSR223 PostProcessor как дочерний элемент запроса, который возвращает вышеуказанный JSON
Поместите следующий код в область "Сценарий":
new groovy.json.JsonSlurper().parse(prev.getResponseData()).myshop.each { entry -> new File('entries.csv') << entry.get('url') << ',' << entry.get('hits') << System.getProperty('line.separator') }
Вот и все, как только вы запустите свой тест
entries.csv
файл будет сгенерирован в папке "bin" JMeter, содержащей информацию в требуемом формате.
Рекомендации:
Также имейте в виду, что подход будет надежно работать, учитывая, что код выполняется максимум с 1 потоком за раз (т.е. убедитесь, что используется контроллер критической секции). В противном случае рассмотрите возможность переключения на Примеры переменных и Гибкий File Writer.