--- name: run-tests description: Use when the user asks to run tests, verify code works, fix errors after edits, or run pytest. Also when user says "запусти тесты", "run tests", "проверь код", "pytest". --- # Навык запуска тестов и исправления ошибок через Pytest Когда активирован этот навык, следуй строгому алгоритму работы с тестами. ## 1. Команда запуска Всегда запускай тесты только через менеджер пакетов `uv`: `uv run pytest` ## 2. Локальный запуск (оптимизация времени) Если ты правишь конкретный файл, не запускай весь тестовый люкс сразу. Запусти только связанные тесты, чтобы сэкономить время: `uv run pytest tests/path_to_test_file.py` ## 3. Временные зависимости (НЕ менять pyproject.toml!) Если для запуска тестов нужны дополнительные пакеты (pydantic, pyyaml, loguru, pillow, dotenv и т.д.) — используй `uv run --with`: ```bash uv run --with pytest --with pydantic --with pyyaml --with loguru --with pillow --with python-dotenv pytest tests/... -v ``` **Запрещено:** `uv add ` — это меняет `pyproject.toml` и `uv.lock` и создаёт лишний коммит. **Разрешено:** `uv run --with ...` — зависимости ставятся временно, конфиги не трогаются. ## 4. Конвенции проекта (asyncio_mode = "auto") В `pyproject.toml` настроено `asyncio_mode = "auto"`. - `pytest-asyncio` автоматически распознаёт асинхронные тест-функции. - **Не пиши `@pytest.mark.asyncio` вручную** — он не нужен и считается избыточным. ## 5. Алгоритм исправления ошибок (TDD-like): 1. Запусти тесты и дождись вывода. 2. Если тесты упали, проанализируй traceback ошибки. 3. Исправь код или сам тест (если тест устарел). 4. Запусти упавший тест повторно через `uv run pytest tests/path_to_test_file.py::test_name`. 5. Повторяй цикл, пока тест не пройдет успешно.