opencode-config/.opencode/skills/run-tests/SKILL.md
2026-07-29 05:14:28 +03:00

2.5 KiB
Raw Blame History

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):

  1. Запусти тесты и дождись вывода.
  2. Если тесты упали, проанализируй traceback ошибки.
  3. Исправь код или сам тест (если тест устарел).
  4. Запусти упавший тест повторно через uv run pytest tests/path_to_test_file.py::test_name.
  5. Повторяй цикл, пока тест не пройдет успешно.