Claude быстро пишет unit-тесты: по функции и её описанию он предложит набор проверок, включая граничные случаи, о которых легко забыть. Но тесты от модели нужно проверять так же внимательно, как код. Разберём, как получать полезные тесты, а не просто высокий процент покрытия.
Что дать на вход
- код функции или класса;
- что она должна делать — описание или docstring;
- тестовый фреймворк: pytest, unittest, Jest, JUnit;
- пример существующего теста в проекте, чтобы Claude повторил стиль;
- зависимости, которые нужно замокать.
Запрос
Напиши тесты на pytest для функции calculate_discount ниже. Покрой: обычные случаи, граничные значения (0, отрицательные суммы, очень большие суммы), некорректные типы данных. Каждый тест — с понятным названием. Не мокай саму функцию. Если поведение в каком-то случае неочевидно, спроси меня, а не придумывай.
Порядок работы
- Попросите сначала список сценариев, которые стоит проверить, без кода.
- Уберите лишние и добавьте то, что знаете о бизнес-логике.
- Попросите тесты по согласованному списку.
- Запустите тесты и посмотрите, какие падают.
- Разберитесь, что сломалось: тест или код.
Какие тесты модель пишет зря
- Тесты, которые проверяют мок, а не код. Например, мок возвращает 5, и тест проверяет, что вернулось 5.
- Тесты-копии реализации. Если тест повторяет логику функции, он пройдёт даже при ошибке.
- Много одинаковых тестов с разными числами, которые проверяют одно и то же.
- Тесты, подогнанные под ошибку. Если в коде баг, Claude может написать тест, который его закрепляет.
Как проверить качество тестов
Простой способ — внести в код намеренную ошибку и посмотреть, упадут ли тесты. Если не упали, тесты слабые. Для этого есть инструменты мутационного тестирования, например mutmut для Python.
Идеи для сложных случаев
Попросите Claude предложить property-based тесты с библиотекой Hypothesis: вместо конкретных чисел проверяются свойства, которые должны выполняться всегда. Например, «скидка никогда не больше суммы заказа».
Безопасность
Не отправляйте в чат код с ключами, паролями и строками подключения к базе. Замените их на заглушки.
Частые вопросы
Может ли Claude сам запустить тесты?
В чате Claude может выполнить небольшой код в своей песочнице, но проект с вашими зависимостями там не запустить. С реальным репозиторием работает Claude Code: он запускает тесты и исправляет ошибки.
Как проверить код перед написанием тестов?
См. статью Claude для code review.
Claude или ChatGPT для тестов?
Обе модели справляются. Сравнение — в статье Claude vs ChatGPT для кода.
