Тесты и линтеры¶
Быстрый прогон¶
tox -e deps,pytest # полный сценарий CI: проверка зависимостей + тесты с покрытием
tox -e ruff # проверка форматирования
tox -e ruff-format # применить форматирование
tox -e docs # сборка документации с -W
Список окружений по умолчанию: ruff, build, pytest, docs.
pytest¶
Если зависимости уже установлены, можно запускать напрямую:
pytest
pytest network/base/tests.py::SomeTestCase::test_something
Настройки — в setup.cfg:
[tool:pytest]
addopts = -v --cov --cov-report=term-missing
python_files = tests.py test_*.py
DJANGO_SETTINGS_MODULE = network.settings
Собираются оба шаблона имён: сюиты приложений живут в tests.py, всё более новое —
в отдельных test_*.py рядом с ними.
Покрытие включено по умолчанию; конфигурация — .coveragerc: источник network, из
отчёта исключены network/*/tests.py, network/settings.py и миграции. Итоговый
процент джоба test отдаёт GitLab ключевым словом coverage:, оттуда его берёт
плашка в README.md.
Где что лежит¶
Модулей больше шестидесяти, перечислять их поимённо смысла нет — раскладка такая:
Где |
Что покрывает |
|---|---|
|
Ядро: модели, представления, бизнес-логика |
|
Эндпоинты API |
|
Аналитика |
|
По одному модулю на тему: планирование, TLE, орбитальная механика, задачи Celery, статистика, локализация |
|
По одному модулю на тему: права, контракт ответов, загрузка SiDS, фильтры |
|
Аутентификация и профили |
|
Фронтенд (jest + jsdom) |
Фабрики объектов — factory-boy (все — в network/base/tests.py и
network/users/tests.py), моки — unittest.mock.
Тесты фронтенда¶
npm ci
npm test # jest + jsdom, тесты в tests/js/
В CI jest идёт в джобе js_css_linting вместе с линтерами, на образе
node:24-bookworm.
Линтеры Python¶
Единственный инструмент — ruff (ruff.toml):
длина строки 88, отступ 4 пробела;
двойные кавычки;
сортировка импортов (правило
I): стандартная библиотека → сторонние → локальныеnetwork.*;соглашение о docstring’ах — Google.
Из проверки исключены миграции, network/_version.py, сгенерированный клиент
soniks-network-api-client/, docs/ и versioneer.py.
Линтеры фронтенда¶
npm run lint # eslint + stylelint
npm test # jest
Подробнее — Фронтенд.
Проверка зависимостей¶
tox -e deps пересоздаёт окружение, ставит ровно то, что записано в
requirements-dev.txt (с --no-deps, то есть пины считаются полным локом), и выполняет
pip check. Расхождение пинов ловится именно здесь.
Что делает CI¶
Стадии .gitlab-ci.yml: schema → api → static → build → test → publish →
deploy_stand → security → deploy_prod. Проверки качества — джобы
js_css_linting, js_tests (npm test), python_linting (tox -e ruff),
docs (tox -e docs) и test (tox -e deps,pytest). Подробнее — CI/CD и деплой.