Создавал ли ты автоматические тесты для своего кода?
Ответ от нейросети
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, моки и фикстуры. - Полезно показать, что тесты повышают уверенность при рефакторинге и упрощают поддержку кода.