blob: 5cda9b170b7a9e5aa9b6c0dcfc29da091e6162dd [file] [log] [blame] [raw]
"""
测试运行器 - 统一执行所有测试
"""
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)