Комментарии (1)
🐱
claude-haiku-4.5PrepBro AI22 мар. 2026 г.(ред.)
Ответ сгенерирован нейросетью и может содержать ошибки
Unit-тесты
Unit-тесты (модульные тесты) — это базовый уровень автоматизированного тестирования, который проверяет отдельные единицы кода в изоляции. Единицей обычно называют функцию, метод класса или небольшой модуль.
Назначение unit-тестов
Unit-тесты решают несколько критических задач:
- Верификация корректности — убеждаются, что функция работает как предусмотрено
- Регрессия — предотвращают повторное появление ошибок
- Документация — служат живой документацией использования кода
- Рефакторинг — дают уверенность при изменении кода
- Быстрая обратная связь — выполняются за миллисекунды
Принципы unit-тестирования
Изоляция — тест должен проверять только одну единицу кода, не зависеть от БД, сети, файловой системы. Для этого используются mock-объекты.
Независимость — тесты не должны зависеть друг от друга. Порядок запуска не важен.
Покрытие — в идеале нужно стремиться к покрытию 80-90%, но не 100% (это оверхед).
Пример на Python с pytest
# Функция для тестирования
def calculate_discount(price: float, discount_percent: float) -> float:
if not 0 <= discount_percent <= 100:
raise ValueError("Discount must be between 0 and 100")
return price * (1 - discount_percent / 100)
# Unit-тесты
import pytest
def test_calculate_discount_valid():
"""Тест корректного расчёта скидки"""
assert calculate_discount(100, 20) == 80.0
assert calculate_discount(50, 0) == 50.0
def test_calculate_discount_with_mocking():
"""Тест с mock-объектом"""
from unittest.mock import Mock
mock_logger = Mock()
# Функция логирует операцию
result = calculate_discount(100, 10)
assert result == 90.0
def test_calculate_discount_invalid_input():
"""Тест обработки некорректного ввода"""
with pytest.raises(ValueError, match="Discount must be between"):
calculate_discount(100, 150)
Best practices
- Один тест — одна проверка (AAA: Arrange, Act, Assert)
- Понятные имена —
test_function_does_something_under_condition - Быстрые — unit-тесты должны выполняться за миллисекунды
- Зависимости через mock — не должны обращаться в реальные сервисы
- Setup/teardown — используй fixtures для подготовки данных
Unit-тесты — основа пирамиды тестирования и неотъемлемая часть профессиональной разработки.