Files
quiz_test/test_bot.py
2025-09-11 07:34:50 +09:00

136 lines
4.8 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
"""
Тестовый запуск бота - проверка импортов и конфигурации
"""
import sys
import os
# Добавляем путь к проекту
project_root = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
sys.path.insert(0, project_root)
def test_imports():
"""Тестирование всех импортов"""
print("🔍 Проверка импортов...")
try:
from config.config import config
print("✅ config.config - OK")
except ImportError as e:
print(f"❌ config.config - {e}")
return False
try:
from src.database.database import DatabaseManager
print("✅ src.database.database - OK")
except ImportError as e:
print(f"❌ src.database.database - {e}")
return False
try:
from src.services.csv_service import CSVQuizLoader, QuizGenerator
print("✅ src.services.csv_service - OK")
except ImportError as e:
print(f"❌ src.services.csv_service - {e}")
return False
# Проверим aiogram
try:
import aiogram
print(f"✅ aiogram {aiogram.__version__} - OK")
except ImportError as e:
print(f"❌ aiogram - {e}")
return False
return True
def test_config():
"""Тестирование конфигурации"""
print("\n⚙️ Проверка конфигурации...")
try:
from config.config import config
print(f"🔑 BOT_TOKEN: {'✅ Настроен' if config.bot_token and config.bot_token != 'your_bot_token_here' else 'Не настроен'}")
print(f"📁 DATABASE_PATH: {config.database_path}")
print(f"📁 CSV_DATA_PATH: {config.csv_data_path}")
print(f"🎲 QUESTIONS_PER_QUIZ: {config.questions_per_quiz}")
print(f"🎯 GUEST_MODE_ENABLED: {config.guest_mode_enabled}")
print(f"📚 TEST_MODE_ENABLED: {config.test_mode_enabled}")
return True
except Exception as e:
print(f"❌ Ошибка конфигурации: {e}")
return False
async def test_database():
"""Тестирование базы данных"""
print("\n🗄️ Проверка базы данных...")
try:
from src.database.database import DatabaseManager
from config.config import config
db = DatabaseManager(config.database_path)
# Проверим наличие файла БД
if os.path.exists(config.database_path):
print(f"✅ База данных найдена: {config.database_path}")
else:
print(f"❌ База данных не найдена: {config.database_path}")
return False
# Проверим тесты
tests = await db.get_tests_by_category()
print(f"✅ Найдено тестов: {len(tests)}")
for test in tests[:3]: # Показываем первые 3
questions = await db.get_random_questions(test['id'], 1)
print(f" 📚 {test['name']}: {len(questions)} вопросов доступно")
return True
except Exception as e:
print(f"❌ Ошибка базы данных: {e}")
import traceback
traceback.print_exc()
return False
def main():
"""Основная функция тестирования"""
print("🤖 Тестирование Quiz Bot")
print("=" * 50)
# Тест импортов
if not test_imports():
print("\n❌ Ошибка импортов! Проверьте установку зависимостей.")
return False
# Тест конфигурации
if not test_config():
print("\n❌ Ошибка конфигурации!")
return False
# Тест базы данных (асинхронно)
import asyncio
if not asyncio.run(test_database()):
print("\n❌ Ошибка базы данных!")
return False
print("\n🎉 Все тесты прошли успешно!")
# Проверим готовность к запуску
from config.config import config
if config.bot_token and config.bot_token not in ['your_bot_token_here', 'test_token_for_demo_purposes']:
print("\n✅ Бот готов к запуску!")
print("🚀 Запустите: python src/bot.py")
else:
print("\n⚠️ Для запуска реального бота:")
print("1. Получите токен у @BotFather")
print("2. Замените BOT_TOKEN в .env файле")
print("3. Запустите: python src/bot.py")
return True
if __name__ == "__main__":
main()