flask-pytest
README.md
Flask + Pytest
Учебное приложение: API с использованием Flask, SQLAlchemy, Flask-SQLAlchemy, Pytest,
, Factory Boy.pytest-cov
Структура директорий
- 📁 app
- 📄
: фабричная функция__init__.py
для создания инстанса приложения Flask.create_app() - 📄 clients.py: роуты для работы с клиентами.
- 📄 parkings.py: роуты для работы с парковками.
- 📄 client_parking.py: роуты для работы с логами событий парковки.
- 📄
- 📁 data: слой данных
- 📄 models.py: модели таблиц SQLAlchemy.
- 📄 clients.py: функции для работы с данными о клиентах в БД.
- 📄 parkings.py: функции для работы с данными о парковках в БД.
- 📄 client_parking.py: функции для работы с данными о событиях парковки в БД.
- 📁 fake_data: "поддельный" слой данных, используется в юнит-тестах сервисного слоя. Имитирует функции из пакета
.data - 📁 service: сервисный слой – бизнес-логика приложения
- 📄 clients.py: сервисные функции для работы с клиентами.
- 📄 parkings.py: сервисные функции для работы с парковками.
- 📄 client_parking.py: основная бизнес-логика приложения тут – сервисные функции создания событий парковки и выезда с парковки.
- 📁 tests
- 📁 integration: интеграционные тесты API.
- 📁 unit: юнит-тесты.
- 📁 data: юнит-тесты слоя данных.
- 📁 service: изолированные юнит-тесты сервисного слоя, проверяют работу бизнес-логики независимо от БД.
- 📁 web: изолированные юнит-тесты API endpoints.
- 📄 database.py: инициализация БД.
- 📄 errors.py: кастомные исключения для обработки ошибок.
- 📄 main.py: входная точка приложения.
Запуск приложения
python src/main.py# илиdocker compose up -d --build
Запуск тестов
pytest -v# илиdocker compose exec web pytest -v
# With coverage:pytest -v --cov
# Coverage with HTML report (in ./htmlcov/ directory):pytest -v --cov --cov-report html
Покрытие тестами: 100%.
References
Описание
Учебное приложение: API с использованием Flask, SQLAlchemy, Flask-SQLAlchemy, Pytest, pytest-cov, Factory Boy.
Языки
Python
- Makefile