Skip to content

Модуль автотестов 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/]