Исправление ошибки совместимости: • bot.py — убран параметр raise_exception=True (не поддерживается в версии discord.py) * bot.run(token, raise_exception=True) → bot.run(token) * Обработка исключений сохранена через try/except вокруг bot.run() • tests/test_bot.py — обновлённый тест проверки кода обработки ошибок * Убрана проверка на 'raise_exception=True' (не поддерживается) * Добавлена проверка на вызов 'bot.run(token)' Преимущества: - Бот корректно запускается без ошибки TypeError - Обработка ошибок сохранена (LoginFailure, HTTPException, Exception) - Все сообщения об ошибках выводятся пользователю и логируются критически - 200 тестов проходят успешно
53 lines
2.2 KiB
Python
53 lines
2.2 KiB
Python
"""
|
||
Тесты для 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
|
||
|
||
assert bot.bot.command_prefix == "!", (
|
||
f"Команда должна быть с префиксом '!', а не '{bot.bot.command_prefix}'"
|
||
)
|
||
|
||
|
||
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"])
|