Перейти к содержимому

Тестирование

Окно терминала
uv run pytest provider/tests/ -v

С отчётом о покрытии:

Окно терминала
uv run pytest provider/tests/ -v --cov=provider/ --cov-report=term-missing

Каждый push и PR запускают два параллельных задания через test.yml:

ЗаданиеЧто делает
test-*Запускает pytest с проверкой покрытия, загружает отчёт в Codecov
lint-*Запускает ruff, mypy, codespell, pre-commit

Тесты запускаются на основе music-assistant/server@dev (без форка — лёгкий CI).

ИнструментНазначение
uvУправление виртуальным окружением и зависимостями
Python 3.12Целевая версия языка
pytestФреймворк для тестов
pytest-covСбор данных о покрытии
CodecovЗагрузка отчётов о покрытии (автоматически в CI)
ruffЛинтер и форматтер Python
mypyСтатический анализ типов
codespellПроверка орфографии в исходном коде
pre-commitХуки для проверки перед коммитом

Запустить все хуки pre-commit (рекомендуется перед PR):

Окно терминала
uv run pre-commit run --all-files

Только проверка типов:

Окно терминала
uv run mypy provider/

Только линтинг:

Окно терминала
uv run ruff check provider/
uv run ruff format --check provider/

Отчёты о покрытии автоматически загружаются в Codecov при каждом push в CI. Локально просмотреть покрытие:

Окно терминала
uv run pytest provider/tests/ --cov=provider/ --cov-report=html
open htmlcov/index.html

Если тесты или линтеры упали в CI, автоматически создаётся GitHub-задача с меткой incident:ci. Подробнее о процессе работы с инцидентами: Управление инцидентами.