""" 任务二第四阶段验证脚本 验证同步服务与主程序的完整功能 验证项: 1. 同步服务初始化 2. 单次同步流程 3. 调度器初始化 """ import sys from pathlib import Path # 将项目根目录添加到 Python 路径 project_root = Path(__file__).parent.parent sys.path.insert(0, str(project_root)) def test_sync_service_init(): """测试1: 同步服务初始化""" print("\n" + "=" * 60) print("测试1: 同步服务初始化") print("=" * 60) try: from src2.sync_service import SyncService from src2.config import Task2ConfigManager # 初始化配置 config_manager = Task2ConfigManager() print("✓ 配置管理器初始化成功") # 初始化同步服务(测试模式) service = SyncService( config_manager=config_manager, test_mode=True ) print("✓ 同步服务初始化成功") # 验证属性 assert service.workspace_id is not None assert service.docid is not None assert service.access_token is not None print("✓ 服务属性验证通过") return True except Exception as e: print(f"✗ 测试失败: {e}") import traceback traceback.print_exc() return False def test_sync_once(): """测试2: 单次同步流程""" print("\n" + "=" * 60) print("测试2: 单次同步流程") print("=" * 60) try: from src2.sync_service import run_once # 执行一次同步 print("正在执行同步...") result = run_once(test_mode=False) # 验证结果结构 assert 'success' in result assert 'sheets_processed' in result assert 'records_with_link' in result assert 'records_synced' in result print("✓ 结果结构验证通过") # 打印结果摘要 print(f"\n同步结果:") print(f" 成功: {result['success']}") print(f" 处理子表: {result['sheets_processed']} 个") print(f" 跳过子表: {result['sheets_skipped']} 个") print(f" 包含链接: {result['records_with_link']} 条") print(f" 同步成功: {result['records_synced']} 条") print(f" 需要更新: {result['records_updated']} 条") return result['success'] except Exception as e: print(f"✗ 测试失败: {e}") import traceback traceback.print_exc() return False def test_scheduler_init(): """测试3: 调度器初始化""" print("\n" + "=" * 60) print("测试3: 调度器初始化") print("=" * 60) try: from src2.scheduler import Task2Scheduler # 初始化调度器(不启动) scheduler = Task2Scheduler(verbose=False) print("✓ 调度器初始化成功") # 验证属性 assert scheduler.config is not None assert scheduler.sync_interval > 0 print(f"✓ 同步间隔: {scheduler.sync_interval} 分钟") return True except Exception as e: print(f"✗ 测试失败: {e}") import traceback traceback.print_exc() return False def main(): """主测试函数""" print("\n" + "=" * 60) print("任务二第四阶段验证") print("=" * 60) results = {} # 测试1: 同步服务初始化 results['sync_service_init'] = test_sync_service_init() # 测试2: 单次同步流程 results['sync_once'] = test_sync_once() # 测试3: 调度器初始化 results['scheduler_init'] = test_scheduler_init() # 打印总结 print("\n" + "=" * 60) print("验证结果总结") print("=" * 60) all_passed = True for test_name, passed in results.items(): status = "✓ 通过" if passed else "✗ 失败" print(f" {test_name}: {status}") if not passed: all_passed = False print("=" * 60) if all_passed: print("所有测试通过!第四阶段验收完成。") else: print("部分测试失败,请检查错误信息。") print("=" * 60) return 0 if all_passed else 1 if __name__ == "__main__": sys.exit(main())