""" 任务二第一阶段验证脚本 验证基础框架搭建是否正确 """ import sys from pathlib import Path # 将项目根目录添加到 Python 路径 project_root = Path(__file__).parent.parent sys.path.insert(0, str(project_root)) def test_directory_structure(): """测试1: 验证目录结构""" print("=" * 50) print("测试1: 验证目录结构") print("=" * 50) src2_dir = project_root / "src2" logs2_dir = project_root / "logs2" config_file = project_root / "config" / "config_task2.ini" results = [] # 检查 src2 目录 if src2_dir.exists() and src2_dir.is_dir(): print(f" [OK] src2/ 目录存在") results.append(True) else: print(f" [FAIL] src2/ 目录不存在") results.append(False) # 检查 logs2 目录 if logs2_dir.exists() and logs2_dir.is_dir(): print(f" [OK] logs2/ 目录存在") results.append(True) else: print(f" [FAIL] logs2/ 目录不存在") results.append(False) # 检查配置文件 if config_file.exists(): print(f" [OK] config/config_task2.ini 存在") results.append(True) else: print(f" [FAIL] config/config_task2.ini 不存在") results.append(False) return all(results) def test_config_read(): """测试2: 验证配置文件读取""" print("\n" + "=" * 50) print("测试2: 验证配置文件读取") print("=" * 50) try: from src2.config import Task2ConfigManager config = Task2ConfigManager() # 读取TAPD配置 tapd_config = config.get_tapd_config() print(f" [OK] TAPD配置读取成功") print(f" workspace_id: {tapd_config['workspace_id']}") # 读取SmartSheet配置 smartsheet_config = config.get_smartsheet_config() print(f" [OK] SmartSheet配置读取成功") print(f" docid: {smartsheet_config['docid']}") # 读取Schedule配置 schedule_config = config.get_schedule_config() print(f" [OK] Schedule配置读取成功") print(f" sync_interval: {schedule_config['sync_interval']} 分钟") return True except Exception as e: print(f" [FAIL] 配置读取失败: {e}") return False def test_logger(): """测试3: 验证日志写入""" print("\n" + "=" * 50) print("测试3: 验证日志写入到 logs2/") print("=" * 50) try: from src2.logger import get_task2_logger, TASK2_LOG_DIR logger = get_task2_logger() # 写入测试日志 logger.log_api_call( api_type="test", operation="task2/setup_test", request_data={"test": "验证脚本测试"}, response_data={"status": "success"}, success=True ) # 检查日志文件是否创建 log_file = logger._get_today_log_file() if log_file.exists(): print(f" [OK] 日志写入成功") print(f" 日志目录: {TASK2_LOG_DIR}") print(f" 日志文件: {log_file.name}") return True else: print(f" [FAIL] 日志文件未创建") return False except Exception as e: print(f" [FAIL] 日志测试失败: {e}") return False def test_token_manager(): """测试4: 验证Token管理器复用""" print("\n" + "=" * 50) print("测试4: 验证Token管理器复用") print("=" * 50) try: from src.token_manager import TokenManager # 创建TokenManager实例(使用默认缓存路径) token_manager = TokenManager() print(f" [OK] TokenManager导入成功") print(f" 缓存文件: {token_manager.cache_file_path}") # 尝试获取token token = token_manager.get_token() print(f" [OK] Token获取成功") print(f" Token前20字符: {token[:20]}...") return True except ValueError as e: print(f" [WARN] 环境变量未设置: {e}") print(f" 这不影响框架搭建,后续运行时需要设置") return True # 环境变量未设置不算失败 except Exception as e: print(f" [FAIL] Token测试失败: {e}") return False def test_smartsheet_api(): """测试5: 验证SmartSheetAPI复用""" print("\n" + "=" * 50) print("测试5: 验证SmartSheetAPI复用") print("=" * 50) try: from src.smartsheet import SmartSheetAPI from src.token_manager import TokenManager from src2.config import Task2ConfigManager print(f" [OK] SmartSheetAPI导入成功") # 获取配置 config = Task2ConfigManager() docid = config.get_smartsheet_config()['docid'] # 获取token token_manager = TokenManager() token = token_manager.get_token() # 创建SmartSheetAPI实例 api = SmartSheetAPI(token, docid) print(f" [OK] SmartSheetAPI实例创建成功") print(f" docid: {docid}") return True except Exception as e: print(f" [FAIL] SmartSheetAPI测试失败: {e}") return False def main(): """运行所有测试""" print("\n" + "=" * 50) print("任务二第一阶段验证") print("=" * 50) results = { "目录结构": test_directory_structure(), "配置读取": test_config_read(), "日志写入": test_logger(), "Token管理": test_token_manager(), "SmartSheetAPI": test_smartsheet_api() } # 汇总结果 print("\n" + "=" * 50) print("验证结果汇总") print("=" * 50) passed = 0 failed = 0 for name, result in results.items(): status = "[OK]" if result else "[FAIL]" print(f" {status} {name}") if result: passed += 1 else: failed += 1 print(f"\n总计: {passed} 通过, {failed} 失败") if failed == 0: print("\n第一阶段验收通过!") else: print("\n请检查失败项并修复") return failed == 0 if __name__ == "__main__": main()