DeepSeek Код 👁 16

DeepSeek: написать unit-тесты для функции

Промпт DeepSeek для генерации полноценного набора unit-тестов с покрытием граничных случаев.

Промпт Запустить →
Напиши unit-тесты для функции — такие, которые ловят реальные поломки, а не повышают процент покрытия.

Язык и фреймворк: [СТЕК: Python 3.11, pytest]
Функция (свою вставь вместо примера):
[КОД: def split_payment(total, parts, min_part=100):
    if parts <= 0:
        raise ValueError("parts must be positive")
    base = total // parts
    if base < min_part:
        parts = max(1, total // min_part)
        base = total // parts
    rest = total - base * parts
    return [base + (1 if i < rest else 0) for i in range(parts)]]
Что функция значит для бизнеса: [СМЫСЛ: разбивка суммы заказа на платежи, сумма частей обязана совпадать с исходной до копейки]

Что нужно:
1. Тесты на нормальный путь — не больше трёх, с понятными именами.
2. Тесты на края: ноль, единица, отрицательные значения, сумма меньше минимальной части, остаток
   от деления не нулевой.
3. Тесты на исключения: что именно должно упасть и с каким сообщением.
4. Один тест-инвариант: свойство, которое обязано держаться на любых входах (здесь — сумма частей
   равна total). Через `parametrize` — до 7 наборов.
5. Строкой: какие входы остались непокрытыми и почему это допустимо.

Отсечка. Не пиши тестов, которые повторяют реализацию: `assert split_payment(1000, 4) == [250]*4`
рядом с `assert base == total // parts` — это проверка кода самим кодом. Не мокай то, что можно
вызвать напрямую. Не собирай двадцать однотипных случаев вместо одного `parametrize`. Если из кода
видно поведение, которое противоречит смыслу из поля СМЫСЛ, — напиши это отдельной строкой
до тестов, а не подгоняй тест под текущий баг.

Проверка перед выдачей: убедись, что инвариант из пункта 4 падает, если в функции заменить
`rest` на ноль. Если не падает — тест бесполезен, переделай.
Запустить промпт →

Пример результата

```python import pytest from mymodule import calculate_discount # Happy path def test_standard_discount(): assert calculate_discount(100, 0.1) == 90 # Граничные @pytest.mark.parametrize('price', [0, 0.01, 999999]) def test_edge_prices(price): assert calculate_discount(price, 0.1) >= 0 # Невалидный вход def test_negative_price_raises(): with pytest.raises(ValueError): calculate_discount(-1, 0.1) ```

Похожие промпты

Рефакторинг легаси-модуля в Kimi: карта, план, код по шагам
Kimi
Рефакторинг легаси-модуля в Kimi: карта, план, код по шагам
Kimi
Сайт-визитка с 3D одним промптом — Kimi K3
DeepSeek
Телеграм-бот на n8n в DeepSeek: схема нод, которую можно собрать за вечер
Claude
Системный промпт для AI Agent ноды n8n — Claude

Полезные статьи

Промты для программиста: 43 промпта под задачи кода
Промт с котом: 4 провала нейросети и 14 промптов
Мультяшные промты: 13 готовых промптов под четыре манеры

Все гайды →