Используя JMeter, как сравнить данные таблицы с данными JSON? - PullRequest
0 голосов
/ 19 ноября 2018

У меня есть задача сравнить все данные, извлеченные из таблицы postgreSQL, и все данные, расположенные на веб-сайте, который использует REST API (HTTP-запрос с данными JSON), чтобы определить, что отсутствует.

Я получаю данные из postgreSQL, используя запрос JDBC (SELECT * FROM exampleTable), данные представлены в стандартном формате таблицы SQL.

И я получаю данные API REST, используя сэмплер HTTP-запроса, данные в формате JSON:

{"records": [{"id": "rec6iT8M0YFZc9kxf", "fields": {"Birthday": "2010-09-01", "Gender": "Female", "В настоящее время на пастбище": [ "rec7hRbjrgTaKWdCs"], "Порода": "Джерси", "Вес": 1800, "Имя": "Jerri", "Вложения": [{ "ID": "attbz", "URL": "https://IaGSYtK8SlS.jpg","filename":"Jersey_cow.jpg","size":1555316,"type":"image/jpeg","thumbnails":{"small":{"url":" https://_Jersey_cow.jpg","width":27,"height":36},"large":{"url":" https://dl/S4tl79.jpg","width":256,"height":341}}}]}

и т. Д.

оба запроса должны иметь одинаковый формат данных (одинаковые «столбцы» для сравнения> имя, пол, порода, вес и т. Д.)

Я пытался использовать элемент постпроцессора JSON Extractor, чтобы получить отдельные переменные из HTTP-ответа и сравнить их с отдельными переменными из JDBC-запроса, используя элемент Response Assertion, но безуспешно

Я либо получаю эту ошибку: Сообщение об ошибке подтверждения: java.lang.ClassCastException: java.util.ArrayList не может быть приведен к java.lang.String (возможно, из-за того, что я использую весь набор данных SQL вместо данных из отдельных столбцов )

или что-то вроде: Сообщение об ошибке подтверждения: тест не пройден: ожидается совпадение текста / $ {пол} /

Я не знаю, как успешно назначить переменные для данных из таблицы SQL и ответа JSON, а затем сопоставить эти значения переменных (посмотреть, какие записи отсутствуют в том, что REST API выбирает)

Есть ли какой-нибудь простой способ сделать это, используя jmeter GUI и не полагаясь на beanhell / groovy или любой другой вид сценариев (так, просто используя элементы, доступные в jmeter)?

спасибо!

1 Ответ

0 голосов
/ 19 ноября 2018

Не зная структуры вашей базы данных, довольно сложно найти точное решение, однако вы можете преобразовать вывод JDBC-запроса в JSON, используя JSR223 PostProcessor

Пример:

  • С учетом следующего JDBC-запроса конфигурация сэмплера:

    enter image description here

  • , который производит следующий вывод:

    enter image description here

  • Я могу преобразовать его в JSON, используя следующий код Groovy:

    def result = vars.getObject('result')
    def json = new groovy.json.JsonBuilder(result).toPrettyString()
    log.info(json)
    

    enter image description here

    как вы видите, он содержит имена столбцов и значения, вы должны иметь возможность использовать его для утверждений.

Дополнительная информация: Отладка JDBC Sampler приводит к JMeter

...