> Как организовать юнит-тесты в Python? (Python)

Уровень: senior · Роль: backend · Язык: Python · Категория: Технические вопросы

Компании: praktika.ai, Исходный Код

Стек: Python

> Пример ответа

Для организации юнит-тестов в Python рекомендуется использовать встроенный модуль unittest или более современный pytest. Основные принципы:

  1. Структура проекта: Тесты обычно размещают в отдельной директории tests/, которая зеркалирует структуру основного кода. Например:

    project/
    ├── src/
    │   └── my_module.py
    └── tests/
        └── test_my_module.py
  2. Именование: Файлы тестов начинаются с test_, функции - с test_. Это позволяет автоматически обнаруживать их.

  3. Пример с pytest (рекомендуется за простоту):

    PYTHON
    # tests/test_calculator.py
    import pytest
    from src.calculator import add
    def test_add_positive():
    assert add(2, 3) == 5
    def test_add_negative():
    assert add(-1, -1) == -2
  4. Фикстуры: Для подготовки данных используйте @pytest.fixture:

    PYTHON
    @pytest.fixture
    def user_data():
    return {"name": "Alice", "age": 30}
    def test_user(user_data):
    assert user_data["name"] == "Alice"
  5. Запуск: Выполните pytest в корне проекта - он найдет все тесты автоматически.

  6. Изоляция: Каждый тест должен быть независимым. Используйте моки (unittest.mock или pytest-mock) для замены внешних зависимостей.

  7. Параметризация: Для тестирования множества сценариев:

    PYTHON
    @pytest.mark.parametrize("a,b,expected", [(1,2,3), (0,0,0), (-1,1,0)])
    def test_add(a, b, expected):
    assert add(a, b) == expected

Такой подход обеспечивает читаемость, поддерживаемость и быстрый запуск тестов.

> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?

Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью