""" Тесты для bot.py — проверка обработки ошибок запуска бота. Покрывают пункт 1.2 из PLAN_OF_WORKS.md: - raise_exception=True в bot.run() - Логирование и обработка исключений (LoginFailure, HTTPException) """ import sys from pathlib import Path from unittest.mock import MagicMock, patch # Добавляем корень проекта в путь импорта ROOT_DIR = Path(__file__).resolve().parent.parent sys.path.insert(0, str(ROOT_DIR)) class TestBotInit: """Тесты для инициализации бота.""" def test_bot_created_with_default_prefix(self): """Проверка, что бот создан с правильным префиксом команд.""" import bot runner = bot.BotRunner() try: assert runner.bot.command_prefix == "!", ( f"Команда должна быть с префиксом '!', а не '{runner.bot.command_prefix}'" ) finally: runner.stop_event.set() class TestBotErrorHandlingCodeExists: """Тесты для проверки наличия кода обработки ошибок в bot.py.""" def test_error_handling_code_exists(self): """Проверка, что код обработки ошибок существует в файле bot.py.""" with open(ROOT_DIR / "bot.py", encoding="utf-8") as f: content = f.read() # Проверяем обработку ошибок в bot.run() assert "bot.run(token)" in content, "В bot.py должен быть вызов bot.run(token)" # Проверяем наличие обработки LoginFailure assert "LoginFailure" in content, "В bot.py должна быть обработка LoginFailure" # Проверяем наличие обработки HTTPException assert "HTTPException" in content, "В bot.py должна быть обработка HTTPException" # Проверяем наличие логирования ошибок assert "logger.critical" in content, "В bot.py должно быть критическое логирование" if __name__ == "__main__": pytest.main([__file__, "-v"])