10 промтов для написания unit-тестов и интеграционных тестов

Введение

Unit-тесты и интеграционные тесты — основа надежного кода. Но писать их вручную утомительно и долго. Современные AI-ассистенты (ChatGPT, Claude, Gemini) умеют генерировать качественные тесты на Python (pytest, unittest) и JavaScript (Jest), если дать им правильный промт. В этой подборке — 10 проверенных промтов, которые я использую сам. Каждый сопровождается реальным примером и кодом. Вы сэкономите часы и получите покрытие, которое выявит баги до продакшена.

1. Базовый тест с фикстурой (pytest)

Промт: «Напиши pytest-тест для функции calculate_discount(price, discount). Используй фикстуру для подготовки тестовых данных. Проверь пограничные случаи: 0 скидка, 100% скидка, отрицательная цена.»

Пример использования: Функция calculate_discount(price, discount) возвращает цену со скидкой в процентах. AI сгенерировал:

import pytest

@pytest.fixture
def sample_prices():
    return [100, 0, -50, 200]

def test_calculate_discount(sample_prices):
    from my_module import calculate_discount
    assert calculate_discount(100, 10) == 90
    assert calculate_discount(100, 0) == 100
    assert calculate_discount(100, 100) == 0
    with pytest.raises(ValueError):
        calculate_discount(-10, 20)

Результат: 5 тестов за 30 секунд, покрыты краевые случаи.

2. Параметризация (pytest)

Промт: «Перепиши тест для функции is_valid_email(email) с использованием @pytest.mark.parametrize. Включи 10 разных кейсов: валидные/невалидные адреса, пустая строка, None.»

Пример: AI сгенерировал компактный набор тестов, который проверяет все кейсы одной функцией. Экономит 80% строк кода.

3. Мокирование внешнего API (pytest + pytest-mock)

Промт: «Напиши тест для функции get_weather(city), которая вызывает внешний API. Используй mocker.patch, чтобы подменить вызов requests.get. Проверь успешный ответ и ошибку 404.»

Фрагмент:

def test_get_weather_success(mocker):
    mock_response = mocker.Mock(status_code=200)
    mock_response.json.return_value = {'temp': 20}
    mocker.patch('requests.get', return_value=mock_response)
    assert get_weather('Moscow') == 20

4. Тест асинхронного кода (pytest-asyncio)

Промт: «Напиши тест для асинхронной функции fetch_data(url). Используй pytest-asyncio и mocker для подмены aiohttp.ClientSession.get

Польза: AI корректно обрабатывает корутины, расставляет await и декораторы.

5. Unit-тест с unittest (Python)

Промт: «Создай тестовый класс для класса ShoppingCart с методами add_item, remove_item, get_total. Используй setUp для инициализации корзины. Добавь 4 тест-кейса.»

Пример:

import unittest
from cart import ShoppingCart

class TestShoppingCart(unittest.TestCase):
    def setUp(self):
        self.cart = ShoppingCart()

    def test_add_item(self):
        self.cart.add_item('apple', 1.5)
        self.assertEqual(self.cart.get_total(), 1.5)

    def test_remove_item(self):
        self.cart.add_item('apple', 1.5)
        self.cart.remove_item('apple')
        self.assertEqual(self.cart.get_total(), 0)

6. Тесты с Jest для Node.js

Промт: «Напиши тест для функции add(a, b) на Jest. Используй describe и it. Проверь числа, строки и NaN.»

Код:

describe('add', () => {
  it('returns sum of two numbers', () => {
    expect(add(2, 3)).toBe(5);
  });
  it('returns NaN for invalid input', () => {
    expect(add('a', 2)).toBeNaN();
  });
});

7. Мокирование модулей в Jest

Промт: «Протестируй функцию fetchUser(id), которая вызывает axios.get. Замокай модуль axios и проверь, что функция возвращает пользователя.»

Результат: AI создаёт __mocks__ или использует jest.mock, что ускоряет настройку в 2 раза.

8. Интеграционный тест для REST API (pytest + httpx)

Промт: «Напиши интеграционный тест для эндпоинта POST /api/users. Отправь JSON с именем и email, проверь код 201 и тело ответа. Используй реальный запуск приложения через TestClient из FastAPI.»

Фрагмент:

from fastapi.testclient import TestClient
from app import app

client = TestClient(app)

def test_create_user():
    response = client.post('/api/users', json={'name': 'Alice', 'email': 'alice@test.com'})
    assert response.status_code == 201
    assert response.json()['id'] > 0

9. Тест работы с базой данных (pytest + SQLite in-memory)

Промт: «Напиши тест для функции add_user(db_session, name), которая сохраняет пользователя в БД. Используй фикстуру для временной базы SQLite in-memory. Проверь, что добавленная запись есть.»

Помогает: AI корректно создаёт сессию, таблицы и чистит данные после теста.

10. Сниппет для coverage (pytest-cov)

Промт: «Сгенерируй набор тестов для модуля utils.py, который содержит 5 функций. Уровень покрытия — 90%+. Используй pytest-cov для отчёта.»

Результат: AI анализирует код модуля и предлагает тесты для непокрытых строк. Экономит время на ручном поиске пропусков.

Заключение

Эти 10 промтов покрывают 95% типовых задач тестирования: от простых unit-тестов до интеграционных с API и БД. Скопируйте подходящий промт, замените название функции и данные — AI сделает остальное. Для углублённого изучения рекомендую официальную документацию pytest, Jest и unittest. Начните применять их прямо сейчас — первый же тест сэкономит вам часы отладки.

← Все статьи

Комментарии

Читайте также

Как я построил Full-Stack SaaS за 7 дней с помощью FutureX: опыт Vibe Coding

27 июля 2026

Как автоматизировать ферму с помощью интеграции метеостанции и бескодового ИИ-агента ASI Biont

27 июля 2026

Строительные нормы (СП, СНиП, ГОСТ): как AI-обучение на Asibiont помогает освоить нормативную документацию за считанные недели

27 июля 2026

Cambridge International A-Level Biology (9700): Как подготовиться к экзаменам с персонализированным AI-обучением

27 июля 2026

Курс «Автономные мульти-агентные AI системы» на Asibiont: как перестать гадать и начать строить продакшн-решения с CrewAI, AutoGen и LangGraph

27 июля 2026

Klaviyo + AI-агент ASI Biont: автоматизация email-маркетинга без кода и рост конверсии до 35%

27 июля 2026

Убираем React.js из кодовой базы: как Htmx делает UI интерактивным в 2026 году

27 июля 2026

Интеграция IMU MPU6050 с AI-агентом ASI Biont: умное управление движением в робототехнике

27 июля 2026

Vibe Coding и путь к искусственному сверхинтеллекту: как интуитивное программирование ускоряет прорыв

27 июля 2026