Appearance
Модуль автотестов API. realweb.api.test
Совместимость
realweb.api v.6
Описание
Модуль позволяет создаться функциональные тесты для ответов сервера, проверять их на соответствие указанным условиям и спецификации OpenApi.
Понятия
Группа - группа запросов, которые выполняются друг за другом в рамках одной сессии.
Запрос - http-запрос
Результат - результат http-запроса
Настройка
В модуле Realweb Api Config на странице /bitrix/admin/settings.php?lang=ru&mid=realweb.api.config во вкладке Тестирование произвести настройки.
Настройка запросов выполняется в админке на странице /bitrix/admin/realweb_test_group.php
Интерфейс
Список тестов

Редактирование теста

Результат текста

Запуск
Запуск из интерфейса
В интерфейсе есть кнопка запуска тестов: всех тестов, группы тестов или одного конкретного запроса.
Запуск через API
Прямой запуск тестов через API выполняется запросом /api/test-validate/. Может быть использовано для мониторинга или отладки.
Запуск из консоли
Запуск тестов из консоли выполняется скриптом /local/modules/realweb.api.test/tools/validate.php
Доступен опциональный параметр --level с указанием уровня критичности. Доступные уровни объявлены в виде констант в классе \Realweb\Api\Module\Test\Model\Helper.
Скрипт вернёт код ответа:
0 - всё успешно
1 - есть ошибки
2 - параметр --level имеет недопустимый уровень ошибок.
Как работают уровни ошибок
Если не указывать параметр, то любая ошибка в тесте будет значить, что комплекс тестов не пройден и скрипт вернёт код 1.
Если указать уровень ошибки, то не пройденным комплекс тестов будет считаться при наличии в нём ошибок этого уровня или критичнее.
Пример 1: указав --level=6 (LEVEL_WARNING) и получив ошибки уровня LEVEL_CRITICAL и LEVEL_WARNING скрипт вернёт код 1.
Пример 2: указав --level=1 (LEVEL_CRITICAL) и получив ошибки уровня LEVEL_WARNING и LEVEL_NOTIFY скрипт вернёт код 0.
Вне зависимости от заданного уровня ошибок, список не пройденных тестов всегда будет выведен. Уровень ошибки задаётся для того, чтобы была возможность останавливать выполнение деплоя на основе возвращенного кода. К примеру для dev-площадки строгость может быть меньше.
Пример результата запуска из консоли
Some tests are fail:
Body does not match schema for content-type "application/json" for Response [get /api/blog-item/?id=30539 200]
Body does not match schema for content-type "application/json" for Response [get /api/catalog-sections/ 200]
Ответы не совпадают. [/api/catalog-sections/]
Ответы не совпадают. [/api/catalog-section/?catalog_id=1&stuff_id=0]
Body does not match schema for content-type "application/json" for Response [get /api/catalog-list/?page=1&catalog_id=5&stuff_id=0&limit=12&path=/catalog/motopompy/ 200]
Ответы не совпадают. [/api/catalog-list/?page=1&catalog_id=5&stuff_id=0&limit=12&path=/catalog/motopompy/]
Type 'string <html>' is unexpected.
Ответы не совпадают. [/api/catalog-item/?id=13393]
Ответы не совпадают. [/api/form-feedback/]