""" 快速验证脚本 验证新增测试的基本功能 """ import sys import io from pathlib import Path # 设置标准输出编码为UTF-8 sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8') # 添加项目根目录到路径 sys.path.insert(0, str(Path(__file__).parent.parent)) def test_imports(): """测试所有测试模块是否可以正常导入""" print("=" * 70) print("测试模块导入验证") print("=" * 70) modules = [ 'tests.test_e2e_integration', 'tests.test_security_regression', 'tests.test_runner', ] success_count = 0 failed_modules = [] for module_name in modules: try: __import__(module_name) print(f"✅ {module_name} - 导入成功") success_count += 1 except Exception as e: print(f"❌ {module_name} - 导入失败: {e}") failed_modules.append((module_name, str(e))) print(f"\n导入结果: {success_count}/{len(modules)} 成功") if failed_modules: print("\n失败详情:") for module, error in failed_modules: print(f" - {module}: {error}") return False return True def test_test_classes(): """测试关键测试类是否存在""" print("\n" + "=" * 70) print("测试类验证") print("=" * 70) test_classes = [ ('tests.test_e2e_integration', 'TestCodeReuseSecurityRegression'), ('tests.test_e2e_integration', 'TestConfigHotReloadRegression'), ('tests.test_e2e_integration', 'TestExecutionResultThreeStateRegression'), ('tests.test_security_regression', 'TestSecurityRegressionMatrix'), ('tests.test_security_regression', 'TestLLMReviewerRegression'), ('tests.test_security_regression', 'TestCriticalPathCoverage'), ] success_count = 0 for module_name, class_name in test_classes: try: module = __import__(module_name, fromlist=[class_name]) test_class = getattr(module, class_name) print(f"✅ {module_name}.{class_name} - 存在") success_count += 1 except Exception as e: print(f"❌ {module_name}.{class_name} - 不存在: {e}") print(f"\n验证结果: {success_count}/{len(test_classes)} 成功") return success_count == len(test_classes) def test_runner_functionality(): """测试测试运行器的基本功能""" print("\n" + "=" * 70) print("测试运行器功能验证") print("=" * 70) try: from tests.test_runner import TestMetricsCollector # 创建指标收集器 collector = TestMetricsCollector() print("✅ TestMetricsCollector 创建成功") # 测试摘要生成 summary = collector.get_summary() print("✅ 摘要生成功能正常") # 验证摘要字段 required_fields = ['total_tests', 'passed', 'failed', 'errors', 'skipped', 'success_rate'] for field in required_fields: if field in summary: print(f" ✅ 摘要包含字段: {field}") else: print(f" ❌ 摘要缺少字段: {field}") return False return True except Exception as e: print(f"❌ 测试运行器验证失败: {e}") return False def count_test_methods(): """统计测试方法数量""" print("\n" + "=" * 70) print("测试方法统计") print("=" * 70) import unittest modules = [ 'tests.test_e2e_integration', 'tests.test_security_regression', ] total_tests = 0 for module_name in modules: try: module = __import__(module_name, fromlist=['']) loader = unittest.TestLoader() suite = loader.loadTestsFromModule(module) count = suite.countTestCases() print(f"📊 {module_name}: {count} 个测试方法") total_tests += count except Exception as e: print(f"❌ {module_name}: 统计失败 - {e}") print(f"\n总计: {total_tests} 个测试方法") return total_tests def main(): """主函数""" print("\n" + "=" * 70) print("LocalAgent 测试验证工具") print("=" * 70 + "\n") results = [] # 1. 测试导入 results.append(("模块导入", test_imports())) # 2. 测试类验证 results.append(("测试类验证", test_test_classes())) # 3. 测试运行器功能 results.append(("测试运行器", test_runner_functionality())) # 4. 统计测试方法 test_count = count_test_methods() # 总结 print("\n" + "=" * 70) print("验证总结") print("=" * 70) for name, result in results: status = "✅ 通过" if result else "❌ 失败" print(f"{name}: {status}") all_passed = all(result for _, result in results) if all_passed: print(f"\n🎉 所有验证通过!共 {test_count} 个测试方法可用。") print("\n下一步:") print(" 1. 运行关键路径测试: python tests/test_runner.py --mode critical") print(" 2. 运行所有测试: python tests/test_runner.py --mode all") print(" 3. 使用批处理脚本: run_tests.bat") return 0 else: print("\n⚠️ 部分验证失败,请检查错误信息。") return 1 if __name__ == '__main__': exit_code = main() sys.exit(exit_code)