G41_TAPD_BUG_SYNC/src2/test_phase4.py

161 lines
4.1 KiB
Python

"""
任务二第四阶段验证脚本
验证同步服务与主程序的完整功能
验证项:
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())