Как писать тесты с помощью ИИ?
8 часов назад
Никита Вихров
Ответы
Как писать тесты с помощью ИИ
Тесты — одна из лучших задач для вайбкодинга. Шаблонные, предсказуемые, и ИИ пишет их быстро. Но есть нюансы.
Промпт для генерации тестов
Не просите просто «напиши тесты». Давайте структуру:
напиши тесты на pytest для этой функции:
def calculate_discount(price: Decimal, user_tier: str) -> Decimal:
if user_tier == "premium":
return price * Decimal("0.10")
elif user_tier == "standard":
return price * Decimal("0.05")
else:
raise ValueError(f"Unknown user tier: {user_tier}")
покрой:
1. happy path — premium и standard пользователи
2. граничные случаи — цена 0, очень большая цена
3. некорректные данные — неизвестный tier, отрицательная цена, None
4. используй parametrize где уместно
Результат от Claude:
TDD с ИИ: сначала тесты
Попробуйте обратный подход — тесты до реализации:
шаг 1. напиши тесты для функции parse_config(path: str) -> dict.
функция должна:
- читать YAML-файл по пути
- возвращать словарь с ключами: host, port, debug
- бросать FileNotFoundError если файл не существует
- бросать ValueError если отсутствует обязательный ключ host
- port должен быть int, если в файле строка — конвертировать
шаг 2 (после проверки тестов):
теперь напиши реализацию которая проходит эти тесты
Тесты написанные по требованиям, а не по коду — ловят баги в реализации.
Запрос граничных случаев отдельно
Модель по умолчанию пишет happy path. Просите граничные случаи явно:
вот мои тесты для parse_csv(file_path):
[тесты]
какие граничные случаи я не учёл?
предложи дополнительные тест-кейсы
Claude найдёт: пустой файл, файл только с заголовками, unicode в значениях, разные line endings (\r\n vs \n), кавычки внутри полей, BOM в начале файла.
Генерация фикстур и фабрик
ИИ отлично генерирует тестовые данные:
напиши factory_boy фабрику для модели Order:
class Order(Base):
id: int
user_id: int
items: list[OrderItem]
status: str # "pending", "paid", "cancelled"
total: Decimal
created_at: datetime
нужны варианты:
- обычный заказ (pending)
- оплаченный заказ (paid)
- заказ с несколькими товарами
- отменённый заказ
Результат:
Ревью тестов с ИИ
Уже написанные тесты отдайте на проверку:
вот мои тесты. найди:
1. что я не протестировал
2. тесты которые проверяют реализацию, а не поведение
3. возможные false positive
4. дублирование
[тесты]
Главная ловушка
Тесты написанные по коду могут закреплять баги:
Решение — формулируйте тест от требования:
вот требование: скидка 10% применяется к цене до налога.
вот реализация: [код]
напиши тест по требованию. если реализация противоречит — укажи на это
Если коротко: давайте структуру в промпте, просите граничные случаи отдельно, пишите тесты от требований — и покрытие будет реальным, а не формальным.
8 часов назад
Никита Вихров