Добавим ещё один параметр к нашей ручке search. У нас есть спецификация, мы добавляем ещё один параметр, происходит генерация, и наш тест, написанный в Retrofit, ломается. Возникает ошибка компиляции, потому что мы добавили ещё один параметр, о котором мы ничего не знаем конкретно в этом методе. Далее мы используем response specification — это особенность REST Assured. И валидируем сразу ответ, проверяем, что код — 200.
Вместо кода, где у нас не типизированные assertions, а стандартные hamcrest матчеры, мы получаем типизированные assertions — более удобные и понятные. Если у нас кроме модели ещё есть примеры значений параметров, то можем попробовать сгенерировать реальные шаблоны тестов и сами тесты. Нужно добавить парочку темплейтов, и получим тесты. Из неё нам понятно, какой перед нами API, понятны все операции, понятно, как API используется и что вернётся. Более того, через эту страницу можно делать запросы и получать ответы.
Бывает так, что проект автотестов не компилируется из-за изменений спецификации сервиса. Необходимо понимать, почему это происходит. Для этого нам надо получить разницу в документации, например, используя swagger-diff. На GitHub создали project-template, где указали клиент, модуль с тестами, настроили генерацию.
Тест-дизайн
У нас генерируются тестовые классы, мы можем поправить их в target, запустить и использовать. Через IDE нажимаем клавишу F6, и у нас возникает окошко. Для того чтобы настроить генерацию тестов, нам надо прописать template_directory с нужными темплейтами и добавить шаблон для тестов. Ещё вариант — поиск с множеством параметров. Этого метода в API api.pet нет — и получаем ошибку компиляции.
Если всё в порядке, загрузите папку dist (ее можно переименовать) на сервер и добавьте документацию на существующий сайт. В примере используется модель авторизации OAuth 2.zero. На самом деле, код представлен в демонстрационных ручное тестирование api целях, никакой реальной логики за авторизацией нет. После настройки конфигурации мы получим аннотации, которые можно использовать для документирования кода. Обязательность можно указать для конкретной схемы.
Swagger/openapi Specification Как Основа Для Ваших Приёмочных Тестов
Мы можем проверять в тестах, что наш ответ после запроса соответствует определённой модели, которая описана в спецификации. Но в реальности это очень маленькое, узкое покрытие. Мы проверяем только модели и не проверяем значения. Если это, например, JSON, то мы проверяем только поля и что они соответствуют схеме. Но нам бы хотелось понимать, что ответ нашего запроса правильный.
Позже у нас появляется потребность сделать POST-запрос, который добавляет еще один параметр в запросе – handle. Это можно сделать через создание нового класса и объединения в нем AllOfExampleGet с новым параметром – handle. Tags позволяют разметить, в какой блок должен быть помещен запрос. Например, вы делаете запросы про информацию о магазине.
Внутри этих верхнеуровневых объектов есть много вложенных объектов. Давайте далее последовательно рассмотрим все объекты верхнего уровня. Пользовательский интерфейс Swagger полностью размещен в SwaggerHub. Вы можете написать и визуализировать API или импортировать существующие определения для создания интерактивного интерфейса, размещенного в облаке.
Всё благодаря этой замечательной странице Swagger UI. API (Application Programming Interface) — это набор процедур, протоколов и инструментов, позволяющих разным программным приложениям общаться между собой. API дает возможность осуществлять взаимодействие с различными сервисами и приложениями, используя специальные запросы и ответы. Вы можете выбрать, в каком формате отобразить ответ — XML или JSON. Верхний уровень спецификации OpenAPI 3 https://deveducation.com/.0 содержит восемь объектов.
- Три года назад картина у нас была следующая.
- Для тестировщиков головная боль — именование тестовых методов и тестовых классов.
- Из неё нам понятно, какой перед нами API, понятны все операции, понятно, как API используется и что вернётся.
- Поняв, что дублируем много кода и он очень громоздкий, мы написали свою обвязку над HTTP client-ом.
- Поэтому можно описывать какие-то важные вещи прямо в описании запроса.
Если нам нужен проект автотестов на какой-то новый сервис, мы берём и наследуемся от этого шаблона. Чтобы проект заработал, нам достаточно поменять значения двух property, и получаем готовые тесты и сгенерированные клиенты. Необходимо понимать, с каким опытом мы пришли к этой задаче. Давайте поговорим об эволюции автотестов, которую мы прошли. Изначально мы писали автотесты на Apache HTTP consumer. Поняв, что дублируем много кода и он очень громоздкий, мы написали свою обвязку над HTTP client-ом.
Есть API-клиент, есть вызов Story API и метод getInventory. Второй способ — использовать специализированные средства для написания спецификаций. Вы в нем описываете вашу спецификацию, там есть удобный редактор, который сразу её валидирует.