cleaning root
Some checks reported errors
continuous-integration/drone/push Build encountered an error
Some checks reported errors
continuous-integration/drone/push Build encountered an error
This commit is contained in:
135
tests/test_bot.py
Normal file
135
tests/test_bot.py
Normal file
@@ -0,0 +1,135 @@
|
||||
#!/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()
|
||||
Reference in New Issue
Block a user