Files
quiz_test/tests/test_bot_fix.py
Andrey K. Choi b0346e4bd7
Some checks reported errors
continuous-integration/drone/push Build encountered an error
cleaning root
2025-09-11 08:18:31 +09:00

118 lines
3.5 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/usr/bin/env python3
"""
Тест для проверки работы бота после исправления ошибки Pydantic
"""
import asyncio
import sys
import os
# Добавляем путь к проекту
project_root = os.path.dirname(os.path.abspath(__file__))
sys.path.insert(0, project_root)
from aiogram.types import User, Chat, Message, CallbackQuery, InlineKeyboardMarkup, InlineKeyboardButton
from src.bot import QuizBot
from config.config import config
async def create_mock_callback(user_id: int = 12345, data: str = "back_to_menu") -> CallbackQuery:
"""Создаем мок callback query"""
user = User(
id=user_id,
is_bot=False,
first_name="Test",
username="testuser"
)
chat = Chat(id=user_id, type="private")
message = Message(
message_id=1,
date=1234567890,
chat=chat,
from_user=user,
content_type="text",
text="Test message"
)
callback = CallbackQuery(
id="test_callback",
from_user=user,
chat_instance="test",
data=data,
message=message
)
return callback
async def test_bot_handlers():
"""Тестируем обработчики бота"""
print("🧪 Тестирование обработчиков бота...")
# Создаем экземпляр бота
bot = QuizBot()
await bot.init_db()
try:
# Тестируем stats_callback_handler
print("📊 Тестируем stats_callback_handler...")
callback = await create_mock_callback(data="stats")
# Этот вызов должен работать без ошибок
await bot.stats_callback_handler(callback)
print("✅ stats_callback_handler работает корректно")
# Тестируем back_to_menu
print("🏠 Тестируем back_to_menu...")
from aiogram.fsm.context import FSMContext
from aiogram.fsm.storage.memory import MemoryStorage
storage = MemoryStorage()
context = FSMContext(
storage=storage,
key={'bot_id': bot.bot.id, 'chat_id': 12345, 'user_id': 12345}
)
callback = await create_mock_callback(data="back_to_menu")
# Этот вызов должен работать без ошибок Pydantic
await bot.back_to_menu(callback, context)
print("✅ back_to_menu работает корректно")
except Exception as e:
print(f"❌ Ошибка в тестах: {e}")
return False
finally:
await bot.db.close()
print("🎉 Все тесты пройдены успешно!")
return True
async def main():
"""Главная функция"""
print("=" * 50)
print("🔧 Тест исправления ошибки Pydantic frozen instance")
print("=" * 50)
try:
success = await test_bot_handlers()
if success:
print("\n✅ Исправление успешно! Бот готов к использованию.")
return 0
else:
print("\n❌ Тесты не прошли. Требуется дополнительная отладка.")
return 1
except Exception as e:
print(f"\n💥 Критическая ошибка: {e}")
return 1
if __name__ == "__main__":
exit_code = asyncio.run(main())
sys.exit(exit_code)