Ректор МГТУ им. Баумана посоветовал не отдавать детей в IT
Ректор МГТУ им. Баумана Михаил Гордин советует не отдавать детей в IT, так как навык программирования не гарантирует долгую карьеру. Об этом он заявил в интервью «Ведомостям».

Начал писать тесты для бота. Оказалось не так страшно как думал
Долго откладывал тесты для своих ботов. Казалось что это боль: нужно мокать API, имитировать апдейты, непонятно с чего начать.
Начал с малого. Вынес всю бизнес-логику в отдельные функции которые не знают ничего про Telegram. Просто принимают данные, возвращают результат.
python
# Не так
async def handle_payment(message: types.Message):
amount = int(message.text)
if amount > 10000:
await message.answer("Сумма слишком большая")
# А так
def validate_amount(amount: int) -> tuple[bool, str]:
if amount > 10000:
return False, "Сумма слишком большая"
return True, ""
async def handle_payment(message: types.Message):
is_valid, error = validate_amount(int(message.text))
if not is_valid:
await message.answer(error)Теперь validate_amount тестируется обычным pytest без всяких моков. Вызываешь функцию, проверяешь результат.
Звучит очевидно. Но я долго писал всю логику прямо в хендлерах и потом удивлялся почему тестировать неудобно. Оказывается проблема была не в тестах, а в архитектуре.
Покрытие пока небольшое, но уже несколько раз тесты поймали регрессию которую я бы заметил только в продакшене.
Кто тестирует ботов, как организуете?

Ректор МГТУ им. Баумана Михаил Гордин советует не отдавать детей в IT, так как навык программирования не гарантирует долгую карьеру. Об этом он заявил в интервью «Ведомостям».
