| """ |
| 测试运行器 - 统一执行所有测试 |
| """ |
| |
| import unittest |
| import sys |
| import os |
| |
| # 添加项目根目录到Python路径 |
| sys.path.insert(0, os.path.dirname(os.path.abspath(__file__))) |
| |
| def run_all_tests(): |
| """运行所有测试""" |
| print("🚀 启动Claude Agent增强功能测试套件") |
| print("=" * 60) |
| |
| # 发现并加载所有测试 |
| loader = unittest.TestLoader() |
| start_dir = os.path.dirname(os.path.abspath(__file__)) |
| |
| # 加载单元测试 |
| unit_suite = loader.discover('unit', pattern='test_*.py') |
| print(f"📦 加载单元测试: {unit_suite.countTestCases()} 个测试用例") |
| |
| # 加载黑盒测试 |
| blackbox_suite = loader.discover('blackbox', pattern='test_*.py') |
| print(f"📦 加载黑盒测试: {blackbox_suite.countTestCases()} 个测试用例") |
| |
| # 合并测试套件 |
| all_tests = unittest.TestSuite([unit_suite, blackbox_suite]) |
| total_tests = all_tests.countTestCases() |
| print(f"📊 总测试用例数: {total_tests}") |
| |
| print("\n" + "=" * 60) |
| print("🧪 开始执行测试...") |
| print("=" * 60) |
| |
| # 运行测试 |
| runner = unittest.TextTestRunner(verbosity=2, buffer=True) |
| result = runner.run(all_tests) |
| |
| # 打印详细结果 |
| print("\n" + "=" * 60) |
| print("📋 测试执行总结") |
| print("=" * 60) |
| |
| print(f"✅ 总测试数: {result.testsRun}") |
| print(f"✅ 成功: {result.testsRun - len(result.failures) - len(result.errors)}") |
| print(f"❌ 失败: {len(result.failures)}") |
| print(f"💥 错误: {len(result.errors)}") |
| print(f"⏭️ 跳过: {len(result.skipped) if hasattr(result, 'skipped') else 0}") |
| |
| success_rate = ((result.testsRun - len(result.failures) - len(result.errors)) / result.testsRun) * 100 |
| print(f"📈 成功率: {success_rate:.1f}%") |
| |
| if result.failures: |
| print("\n🔴 失败的测试:") |
| for i, (test, traceback) in enumerate(result.failures, 1): |
| print(f" {i}. {test}") |
| # 只显示错误的关键部分 |
| lines = traceback.split('\n') |
| for line in lines[-3:]: |
| if line.strip(): |
| print(f" {line.strip()}") |
| |
| if result.errors: |
| print("\n💥 错误的测试:") |
| for i, (test, traceback) in enumerate(result.errors, 1): |
| print(f" {i}. {test}") |
| # 只显示错误的关键部分 |
| lines = traceback.split('\n') |
| for line in lines[-3:]: |
| if line.strip(): |
| print(f" {line.strip()}") |
| |
| print("\n" + "=" * 60) |
| |
| if result.wasSuccessful(): |
| print("🎉 所有测试通过!Claude Agent增强功能已准备就绪") |
| print("🚀 建议:可以投入生产环境使用") |
| else: |
| print("⚠️ 测试未完全通过,建议修复失败的测试后再部署") |
| print("🔧 建议:检查失败的测试用例并修复相关问题") |
| |
| print("=" * 60) |
| |
| return result.wasSuccessful() |
| |
| if __name__ == '__main__': |
| success = run_all_tests() |
| sys.exit(0 if success else 1) |