Developer Tools / Testing · 2022
pycamel
Фреймворк для автоматизованого тестування API на базі pytest
Опубліковано: · Оновлено:
- Роль
- Соло-розробка фреймворку автоматизації тестування
- Стек
- Python, pytest, Pylint, Coverage, codecov
- Рік
- 2022
pycamel — фреймворк для автоматизованого тестування API-сервісів з безшовною інтеграцією в pytest. Він дає структурований спосіб писати тести API, особливо корисний для мікросервісних архітектур.
Задача
Коли команда працює з кількома сервісами й версіями API одночасно, розрізнені ad-hoc pytest-скрипти швидко перетворюються на хаос без спільної структури й перевикористовуваних компонентів.
Рішення
- ▸CamelConfig — ініціалізація конфігурації з базовим URL сервісу
- ▸RouterMaker — побудова маршрутів для різних API-ендпоїнтів
- ▸Параметризоване тестування через pytest.mark.parametrize
- ▸Методи валідації відповідей, зокрема assert_status_code
- ▸Підтримка фільтрів запитів та легке розширення для мультисервісних архітектур
Як це працює
Проєкт один раз оголошує базовий хост через CamelConfig у tests/conftest.py. Далі кожен сервіс отримує власний RouterMaker з префіксом шляху, наприклад /data-service/v1, а кожен ендпоінт стає перевикористовуваним роутером, доступним як pytest-фікстура. Тести викликають router.get() чи post() і перевіряють відповідь, тож код тестів повторює структуру самого API.
- ▸Заголовки за замовчуванням для кожного роутера (одразу Content-Type: application/json), а також set_headers і append_header, що діють лише на наступний запит
- ▸Query-параметри й фільтри через set_filters() для пагінації та пошуку
- ▸Валідація відповідей за схемами pydantic v2
- ▸Окремі router maker'и для кожної версії API (v1, v2) для сервісів, що розвиваються паралельно
Підтримка
pycamel опублікований на PyPI з 2022 року й досі підтримується: поточна мажорна версія розрахована на Python 3.10+ і pydantic v2, юніт-тести запускаються на GitHub Actions, а покриття відстежується в Codecov.
Результат
Фреймворк налаштований на якість коду: Pylint для статичного аналізу та Coverage разом з codecov для контролю покриття тестами.
Згадки та джерела