run_refactor_tests.py 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  1. """
  2. 运行所有重构测试
  3. 这个脚本会依次运行所有测试文件,并生成测试报告
  4. """
  5. import subprocess
  6. import sys
  7. from pathlib import Path
  8. from datetime import datetime
  9. def run_test(test_file, description):
  10. """运行单个测试文件"""
  11. print("\n" + "=" * 80)
  12. print(f"运行测试: {description}")
  13. print(f"文件: {test_file}")
  14. print("=" * 80)
  15. print()
  16. try:
  17. result = subprocess.run(
  18. [sys.executable, test_file],
  19. capture_output=True,
  20. text=True,
  21. timeout=30
  22. )
  23. print(result.stdout)
  24. if result.returncode == 0:
  25. print(f"\n✅ {description} - 测试通过")
  26. return True
  27. else:
  28. print(f"\n❌ {description} - 测试失败")
  29. if result.stderr:
  30. print("错误信息:")
  31. print(result.stderr)
  32. return False
  33. except subprocess.TimeoutExpired:
  34. print(f"\n⏱️ {description} - 测试超时")
  35. return False
  36. except Exception as e:
  37. print(f"\n❌ {description} - 运行出错: {e}")
  38. return False
  39. def main():
  40. """运行所有测试"""
  41. print("\n" + "🧪" * 40)
  42. print("重构功能测试套件")
  43. print(f"开始时间: {datetime.now().strftime('%Y-%m-%d %H:%M:%S')}")
  44. print("🧪" * 40)
  45. examples_dir = Path(__file__).parent
  46. # 定义测试列表
  47. tests = [
  48. (examples_dir / "test_goal_model.py", "Goal 模型功能测试"),
  49. (examples_dir / "test_goal_tool.py", "Goal 工具功能测试"),
  50. (examples_dir / "test_subagent_tool.py", "SubAgent 工具功能测试"),
  51. ]
  52. # 运行所有测试
  53. results = []
  54. for test_file, description in tests:
  55. if not test_file.exists():
  56. print(f"\n⚠️ 测试文件不存在: {test_file}")
  57. results.append((description, False))
  58. continue
  59. success = run_test(test_file, description)
  60. results.append((description, success))
  61. # 生成测试报告
  62. print("\n" + "=" * 80)
  63. print("测试报告")
  64. print("=" * 80)
  65. print()
  66. passed = sum(1 for _, success in results if success)
  67. total = len(results)
  68. print(f"总测试数: {total}")
  69. print(f"通过: {passed}")
  70. print(f"失败: {total - passed}")
  71. print()
  72. print("详细结果:")
  73. for description, success in results:
  74. status = "✅ 通过" if success else "❌ 失败"
  75. print(f" {status} - {description}")
  76. print()
  77. print("=" * 80)
  78. if passed == total:
  79. print("🎉 所有测试通过!")
  80. print("=" * 80)
  81. return 0
  82. else:
  83. print(f"⚠️ {total - passed} 个测试失败")
  84. print("=" * 80)
  85. return 1
  86. if __name__ == "__main__":
  87. exit_code = main()
  88. sys.exit(exit_code)