2.5 KiB
2.5 KiB
| name | description |
|---|---|
| run-tests | 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:
uv run --with pytest --with pydantic --with pyyaml --with loguru --with pillow --with python-dotenv pytest tests/... -v
Запрещено: uv add <package> — это меняет pyproject.toml и uv.lock и создаёт лишний коммит.
Разрешено: uv run --with ... — зависимости ставятся временно, конфиги не трогаются.
4. Конвенции проекта (asyncio_mode = "auto")
В pyproject.toml настроено asyncio_mode = "auto".
pytest-asyncioавтоматически распознаёт асинхронные тест-функции.- Не пиши
@pytest.mark.asyncioвручную — он не нужен и считается избыточным.
5. Алгоритм исправления ошибок (TDD-like):
- Запусти тесты и дождись вывода.
- Если тесты упали, проанализируй traceback ошибки.
- Исправь код или сам тест (если тест устарел).
- Запусти упавший тест повторно через
uv run pytest tests/path_to_test_file.py::test_name. - Повторяй цикл, пока тест не пройдет успешно.