Sobes.tech
Назад к вопросам
Junior — Middle
59

Создавал ли ты автоматические тесты для своего кода?

Компании, где спрашивали
TechCore
Black Wall Group
РунитиРунити
VKVK
СБЕР Центр ИИСБЕР Центр ИИ
Атом Безопасность

Ответ от нейросети

sobes.tech AI

Что хотят услышать интервьюеры:

Да, автоматические тесты для своего кода нужно писать регулярно, и важно понимать, что именно они проверяют. Хороший ответ показывает практический опыт: какие тесты использовались, что ими покрывали и как они помогали ловить регрессии. Для Python особенно ценится понимание unit-тестов, моков и тестирования бизнес-логики отдельно от внешних зависимостей.

Определение:

Автоматические тесты — это код, который проверяет корректность другого кода без ручного запуска сценариев. Обычно они помогают быстро убедиться, что функция, модуль или сервис ведут себя ожидаемо после изменений. В Python для этого чаще всего используют unittest или pytest.

Пример использования:

Например, есть функция, которая считает скидку. Автотесты проверяют, что для разных входных данных она возвращает правильный результат, а также что на некорректный ввод реагирует ожидаемым образом.

def calculate_discount(price: float, percent: int) -> float:
    if price < 0:
        raise ValueError("price must be non-negative")
    return price * (1 - percent / 100)


def test_calculate_discount():
    assert calculate_discount(100, 10) == 90


def test_calculate_discount_negative_price():
    try:
        calculate_discount(-1, 10)
        assert False, "Expected ValueError"
    except ValueError:
        assert True

Пояснение кода:

В примере функция calculate_discount содержит бизнес-логику: считает цену после скидки и выбрасывает ошибку, если цена отрицательная. Первый тест проверяет обычный сценарий: 100 со скидкой 10% должно дать 90. Второй тест проверяет защиту от некорректного ввода: отрицательная цена должна привести к ValueError.

На практике такой код обычно оформляют через pytest, чтобы тесты были короче и читабельнее. Например, вместо try/except чаще используют pytest.raises, но идея остается той же: тест должен явно описывать ожидаемое поведение.

Ключевые моменты:

  • Автотесты помогают быстро ловить регрессии после изменений в коде.
  • Для Python обычно тестируют отдельные функции, классы и бизнес-логику.
  • Важно проверять не только счастливый путь, но и ошибки, крайние случаи, некорректный ввод.
  • Хороший ответ на собеседовании — это не просто «да», а описание, что именно тестировалось и с каким инструментом.
  • Если есть опыт, стоит упомянуть pytest, unittest, моки и фикстуры.
  • Полезно показать, что тесты повышают уверенность при рефакторинге и упрощают поддержку кода.