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

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

У меня есть ответ 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 Ответ

0 голосов
/ 19 февраля 2019
  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 потоком за раз (т. Е. Обязательно используйте КритическийКонтроллер секции ).В противном случае рассмотрите возможность переключения на Примеры переменных и Flexible File Writer

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