Ответ
Процесс модульного (компонентного) тестирования включает несколько этапов:
- Анализ спецификации: Изучение требований к модулю (API-контракт, ожидаемое поведение, входные/выходные данные).
- Тест-дизайн: Создание тест-кейсов, покрывающих:
- Позитивные сценарии (корректные данные).
- Негативные сценарии (некорректные данные, ошибки).
- Граничные значения.
- Изоляция модуля: Использование моков (mocks) и стабов (stubs) для замены зависимостей (база данных, внешние API). Это ключевой аспект модульного тестирования.
- Написание и выполнение тестов:
# Пример модульного теста для функции логина с использованием pytest и unittest.mock from unittest.mock import Mock import pytest
def test_login_success(mocker):
Мокаем вызов к базе данных
mock_db = mocker.patch('module.database.get_user', return_value={"id": 1, "password_hash": "..."})
# Мокаем функцию хеширования пароля
mocker.patch('module.auth.verify_password', return_value=True)
result = login(username="valid_user", password="correct_pass")
assert result["status"] == "success"
assert "auth_token" in result
mock_db.assert_called_once_with(username="valid_user") # Проверяем, что мок был вызван
5. **Анализ покрытия кода (Code Coverage):** Использование инструментов (например, `pytest-cov`) для оценки процента кода, выполненного тестами.
6. **Рефакторинг и поддержка:** Тесты служат "страховкой" при изменении кода модуля.
**Инструменты:** `pytest`/`unittest` (Python), `JUnit` (Java), `Jest` (JavaScript), `Mockito`.