#!/usr/bin/env python3 """ 系统测试脚本 """ import sys import os from pathlib import Path # 添加项目路径 project_root = Path(__file__).parent / "gx_gp_monitor" sys.path.insert(0, str(project_root)) def test_imports(): """测试模块导入""" print("测试模块导入...") try: from core.config_manager import load_config, get_config print("✓ core.config_manager 导入成功") from core.logger import get_logger print("✓ core.logger 导入成功") from core.models import Announcement, AnnouncementType print("✓ core.models 导入成功") from core.database import get_database_manager print("✓ core.database 导入成功") from crawler.spider import GXGPSpider print("✓ crawler.spider 导入成功") from filters.filters import AnnouncementFilter print("✓ filters.filters 导入成功") from storage.postgresql import PostgreSQLStorage print("✓ storage.postgresql 导入成功") from notification.wechat import WeChatService print("✓ notification.wechat 导入成功") return True except ImportError as e: print(f"✗ 导入失败: {e}") return False def test_config(): """测试配置加载""" print("\n测试配置加载...") try: from core.config_manager import load_config config = load_config() print("✓ 配置文件加载成功") print(f" - 调试模式: {config.debug}") print(f" - 日志级别: {config.log_level.value}") print(f" - 数据库启用: {config.database.enabled}") print(f" - 企业微信启用: {config.wechat_app.enabled}") print(f" - 公告来源数量: {len(config.sources)}") return True except Exception as e: print(f"✗ 配置加载失败: {e}") return False def test_database_connection(): """测试数据库连接""" print("\n测试数据库连接...") try: from core.config_manager import get_config from core.database import init_database config = get_config() if not config.database.enabled: print("⚠ 数据库功能已禁用,跳过连接测试") return True # 尝试初始化数据库 init_database() print("✓ 数据库连接成功") return True except Exception as e: print(f"✗ 数据库连接失败: {e}") return False def main(): """主测试函数""" print("=== 广西政府采购网公告监控系统测试 ===") # 测试导入 if not test_imports(): print("\n❌ 模块导入测试失败") return False # 测试配置 if not test_config(): print("\n❌ 配置加载测试失败") return False # 测试数据库 if not test_database_connection(): print("\n❌ 数据库连接测试失败") return False print("\n✅ 所有测试通过!系统准备就绪。") return True if __name__ == "__main__": success = main() sys.exit(0 if success else 1)