* feat: migrate .opencode/ config from opencode * refactor: rename repo refs and sanitize for public * docs(handoff): add pr-7 handoff + ADR-002 * docs(handoff): fix PR number * docs: update project map with .opencode/ structure --------- Co-authored-by: opencode-agent <agent@slaid098.dev>
43 lines
2.6 KiB
Markdown
43 lines
2.6 KiB
Markdown
---
|
||
name: run-tests
|
||
description: Используй этот навык, когда пользователь просит запустить тесты, проверить работоспособность кода, исправить ошибки после правок или запустить 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 <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. Повторяй цикл, пока тест не пройдет успешно.
|