161 lines
4.1 KiB
Python
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())
|