atesting.ru Блог Проверка схемы JSON в Postman

Проверка схемы JSON в Postman

Проверка схемы JSON в Postman

В предыдущих статьях о Postman Tutorial мы рассмотрели «Как отправить токен JWT в качестве заголовка»

В этой статье «Проверка схемы JSON в Postman» , Я продемонстрирую, как можно реализовать эту концепцию и как следует ее контролировать.

Что такое JSON?

JSON расшифровывается как JavaScript Object Notation. JSON — это легкий формат для хранения и передачи данных. JSON часто используется, когда данные отправляются с сервера на веб-страницу. JSON — это не язык программирования. Это общий и открытый стандартный формат для хранения и обмена данными. JSON не зависит от языка.

Правила — JSON:

1. Данные представлены парами ключ/значение: пара ключ/значение состоит из ключа в двойных кавычках, за которым следует двоеточие, за которым следует значение. В JSON ключи должны быть строками в двойных кавычках, но значения могут иметь любой тип, например строку, число, объект (объект JSON), массив, логическое значение, null.

Пример:

1 & # 34; имя & # 34 ;: & # 34; Джон & # 34;

2. Данные разделяются запятыми: данные разделяются запятой в JSON

Пример:

12 }); & # 34; name & # 34 ;: & # 34; John & # 34;, & lt; br/& gt; & # 34; age & # 34 ;: 10, & lt; br/& gt; & # 34; страна & # 34 ;: & # 34; США & # 34;

3. Объект начинается и заканчивается фигурными скобками {}: объекты JSON окружены фигурными скобками {}

Пример:

12345 {& # 34; name & # 34 ;: & # 34; John & # 34;, & # 34; age & # 34 ;: 10, & # 34; country & # 34 ;: & # 34; США & # 34;}

4. Массивы начинаются и заканчиваются квадратными скобками []: квадратные скобки содержат массивы.

Пример:

1234567891011121314 {& # 34; Студенты & # 34 ;: [{& # 34; name & # 34 ;: & # 34; John & # 34;, & # 34; age & # 34; : 10, & # 34; country & # 34 ;: & # 34; USA & # 34;}, {& # 34; name & # 34 ;: & # 34; Mark & ​​# 34;, & # 34; age & # 34 ;: 12, & # 34; country & # 34 ;: & # 34; USA & # 34;}]}

Что такое путь JSON?

Это конкретное значение или данные в JSON. Мы можем создать путь JSON вручную или с помощью таких инструментов, как JSON PathFinder — http://jsonpathfinder.com/

Нам просто нужно скопировать JSON и вставить его в инструмент.

Пример:

1234567891011121314 {& # 34; Студенты & # 34 ;: [{& # 34; name & # 34 ;: & # 34; John & # 34;, & # 34; age & # 34; : 10, & # 34; country & # 34 ;: & # 34; USA & # 34;}, {& # 34; name & # 34 ;: & # 34; Mark & ​​# 34;, & # 34; age & # 34 ;: 12, & # 34; country & # 34 ;: & # 34; USA & # 34;}]}

Пусть полный массив студентов хранится в переменной x.

  • Путь возраста Джона в JSON: x.Students [0] .age
  • JSON путь к имени Марка: x.Students [1] .name

Что такое схема JSON?

Схема JSON — это контракт для документа JSON, который определяет ожидаемые типы данных и формат каждого поля в ответе.

В нем описывается существующий формат данных с понятной, понятной для человека и машиночитаемой документацией для полной структурной проверки, полезной для автоматического тестирования и проверки данных, представленных клиентом.

 Проверка схемы JSON в Postman

Почему требуется проверка схемы JSON?

Проверка схемы JSON требуется, потому что:

  1. Мы отслеживаем ответы API и гарантируем, что формат, который мы получаем, такой же как и ожидалось.
  2. Мы получаем предупреждение всякий раз, когда в ответе JSON происходит какое-либо критическое изменение.
  3. Мы используем схему JSON для построения модели ответа API, и это упрощает проверку того, что API возвращает действительные данные.

Объект JSON:

< tr class = "crayon-row">

123456 [{& # 34; name & # 34 ;: & # 34; John & # 34;, & # 34; age & # 34 ;: 10}]

Пример схемы JSON:

123456789101112 {& # 34; тип & # 34 ;: & # 34; массив & # 34;, & # 34; элементы & # 34;: {& # 34; тип & # 34 ;: & # 34; объект & # 34; & # 34 ; Свойства & # 34;: {& # 34; name & # 34 ;: {& # 34; type & # 34 ;: & # 34; string & # 34;}, & # 34; age & # 34 ;: {& # 34; введите & # 34 ;: & # 34; integer & # 34;}}}}

Проверка схемы JSON

Сама схема — это объект, который имеет разные свойства. Одно из этих свойств — тип . Если мы объявляем тип как объект, это означает, что если мы отправляем что-то, что не является объектом, это не сработает. Мы будем использовать другой валидатор схемы JSON (Ajv). Это недавно встроенный почтальон.

  • Перейдите на https://jsonschema.net/home
  • Добавьте тело JSON слева
  • Нажмите «Отправить».
  • Схема будет создана справа
  • Скопируйте схему и добавьте на вкладку «Тесты» в Postman, чтобы выполнить проверку схемы.
  • Добавьте этот код для проверки схемы:

123 pm.test (& # 34; Проверить схему & # 34 ;, () = & gt; {pm.response.to.have.jsonSchema (schema);});
  • Мы создали схему JSON из нашего ответа, и теперь мы проверяем ответ JSON с помощью нашей схемы JSON, и если что-либо, связанное со свойствами этой схемы и ответа JSON, не совпадает, тест завершится неудачно.

Проверка схемы JSON в Postman

Мы можем редактировать настройки в соответствии с нашими потребностями с помощью значка шестеренки в правом верхнем углу. Мы можем изменить некоторые вещи. Например, в Object я хочу иметь дополнительные свойства и не хочу, чтобы каждое свойство требовалось. Я даже могу выбрать, какое ключевое слово должно быть включено в схему JSON с помощью параметра видимости ключевого слова.

 Проверка схемы JSON в Postman

Давайте рассмотрим более подробную информацию о проверке схемы JSON:

1. Для пустого объекта {} в ответ тест проверки схемы прошел.

На вкладке «Тесты»

2. Чтобы проверить, действительно ли схема действительна, давайте заменим тело на Foo. Мы получим ошибку JSON. Таким образом, схема не будет работать, если тело не JSON.

3. Вместо пустого тела Допустим, у нас есть свойство, содержащее строку в теле ответа:

1234567 const schema = {& # 34; тип & # 34 ;: & # 34; объект & # 34;}; pm.test (& # 34; Проверить схему & # 34 ;, () = & gt; {pm.response.to.have.jsonSchema (schema);});
123 {& # 34; code & # 34 ;: & # 34; FX002 & # 34;}

Схема будет действительным, потому что это объект.

Если нам нужно проверить это свойство, нам нужно будет добавить еще одно свойство в схему, и это свойство называется свойствами, а в объекте свойств мы можем определить несколько свойств.

12345678910 const schema = {& # 34; тип & # 34 ;: & # 34; объект & # 34;, & # 34; свойства & # 34 ;: {& # 34; код & # 34 ;: {& # 34; тип & # 34; : & # 34; строка & # 34; }}}; pm.test (& # 34; Проверить схему & # 34 ;, () = & gt; {pm.response.to.have.jsonSchema (schema);});

Когда мы отправим это, схема будет действительной.

4. Если у нас есть целочисленное значение,

123 {& # 34; code & # 34 ;: 2}

Проверка схемы завершится ошибкой. В сообщении об ошибке будет указано, что код должен быть строкой.

5. Давайте проверим, что будет, если его переименовать в statusCode.

123 {& # 34; statusCode & # 34 ;: 2}

Когда мы запустим это , схема будет по-прежнему действительна, даже если мы указали свойство под названием code, которое должно быть строкой. По этой причине нам необходимо детально протестировать нашу схему, чтобы убедиться, что все работает.

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

Когда мы снова отправим запрос, мы увидим, что проверка прошла правильно. Он проверяет код свойства, и в ответе код свойства отсутствует. Таким образом, проверка схемы проверки не удалась. В сообщении об ошибке говорится, что «данные должны иметь обязательное свойство code».

6. Чтобы ограничить количество свойств, которые мы получаем из ответа, мы указываем additionalProperties в нашей схеме.

Пример:

1234567891011 const schema = {& # 34; type & # 34 ;: & # 34; object & # 34;, & # 34; properties & # 34 ;: {& # 34 ; код & # 34 ;: {& # 34; тип & # 34; : & # 34; строка & # 34; }}, & # 34; требуется & # 34 ;: [& # 34; code & # 34;]}; pm.test (& # 34; Проверить схему & # 34 ;, () = & gt; {pm.response.to.have.jsonSchema (schema);});
1234 {& # 34; code & # 34 ;: & # 34; FX002 & # 34 ;, & # 34; error & # 34 ;: {}}

Если мы хотим избежать свойств, которые мы не знаю, и мы хотим быть проинформированными, если что-то действительно изменится в ответе, тогда мы можем добавить дополнительную конфигурацию в схему. Это называется additionalProperties . Если мы укажем false, дополнительные свойства не будут разрешены.

123456789101112 const schema = {& # 34; type & # 34 ;: & # 34; object & # 34;, & # 34; properties & # 34 ;: {& # 34; code & # 34 ;: {& # 34; type & # 34; : & # 34; строка & # 34; }}, & # 34; required & # 34 ;: [& # 34; code & # 34;], & # 34; additionalProperties & # 34 ;: false}; pm.test (& # 34; Проверить схему & # 34 ;, () = & gt; {pm.response.to.have.jsonSchema (schema);});

Проверить схему не удастся. В нем говорится, что данные не должны иметь дополнительных свойств. Но ответ содержит ошибку как дополнительное свойство.

7. Предположим, у нас есть вложенный объект в ответе с именем error, а сама ошибка имеет свойство с именем message.

Пример:

123456 {& # 34; code & # 34 ;: & # 34; FX002 & # 34 ;, & # 34; error & # 34 ;: {& # 34; message & # 34 ;: & # 34; Что-то пошло не так & # 34;}}

Схема будет такой:

Проверка схемы будет пройдена.

8. Если в нашем ответе есть массивы,

Пример:

12345678910111213141516171819 const schema = {& # 34; type & # 34 ;: & # 34; object & # 34;, & # 34; properties & # 34 ;: {& # 34; code & # 34 ;: {& # 34; type & # 34; : & # 34; строка & # 34; }, & # 34; error & # 34 ;: {& # 34; type & # 34 ;: & # 34; object & # 34;, & # 34; properties & # 34 ;: {& # 34; message & # 34 ;: { & # 34; type & # 34 ;: & # 34; string & # 34;}}, & # 34; required & # 34 ;: [& # 34; message & # 34;]}}, & # 34; required & # 34; : [& # 34; код & # 34; & # 34; ошибка & # 34;], & # 34; additionalProperties & # 34 ;: false}; pm.test (& # 34; Проверить схему & # 34 ;, () = & gt; {pm.response.to.have.jsonSchema (schema);});
1234567 {& # 34; code & # 34 ;: & # 34; FX002 & # 34 ;, & # 34; error & # 34 ;: {& # 34; message & # 34 ;: & # 34; Что-то пошло не так & # 34;}, & # 34; теги & # 34 ;: [& # 34; фатальная, & # 34; ошибка & # 34;]}

Схема будет:

123456789101112131415161718192021222324252627 const schema = {& # 34; type & # 34 ;: & # 34; object & # 34;, & # 34; properties & # 34 ;: {& # 34; code & # 34 ;: {& # 34; type & # 34; : & # 34; строка & # 34; }, & # 34; error & # 34 ;: {& # 34; type & # 34 ;: & # 34; object & # 34;, & # 34; properties & # 34 ;: {& # 34; message & # 34 ;: { & # 34; type & # 34 ;: & # 34; string & # 34;}}, & # 34; required & # 34 ;: [& # 34; message & # 34;]}, & # 34; теги & # 34; : {& # 34; type & # 34 ;: & # 34; array & # 34 ;, & # 34; minItems & # 34 ;: 1, & # 34; maxItems & # 34 ;: 3, & # 34; items & # 34; : {& # 34; type & # 34 ;: & # 34; string & # 34;}}}, & # 34; required & # 34 ;: [& # 34; code & # 34 ;, & # 34; error & # 34; ], & # 34; additionalProperties & # 34 ;: false}; pm.test (& # 34; Проверить схему & # 34 ;, () = & gt; {pm.response.to.have.jsonSchema (schema);});

Проверка схемы будет пройдена. Если мы хотим иметь хотя бы 1 элемент, мы укажем свойство minItems и аналогичным образом мы можем указать maxItems . Чтобы определить типы элементов в массиве, мы используем свойство items.

Следующие шаги:

Изучите « Тестирование на основе данных в Postman »в следующем руководстве.

TAG: qa