101 lines
2.3 KiB
Python
101 lines
2.3 KiB
Python
"""
|
|
统一测试运行器
|
|
|
|
运行所有测试并生成报告
|
|
"""
|
|
|
|
import pytest
|
|
import sys
|
|
import time
|
|
from pathlib import Path
|
|
|
|
|
|
def run_all_tests():
|
|
"""运行所有测试"""
|
|
print("Deep2048 项目测试套件")
|
|
print("=" * 50)
|
|
|
|
test_dir = Path(__file__).parent
|
|
|
|
# 测试文件列表
|
|
test_files = [
|
|
"test_training_data.py",
|
|
"test_game_engine.py",
|
|
"test_torch_mcts.py",
|
|
"test_board_compression.py",
|
|
"test_cache_system.py",
|
|
"test_persistence.py",
|
|
"test_performance_benchmark.py"
|
|
]
|
|
|
|
# 检查测试文件是否存在
|
|
existing_tests = []
|
|
for test_file in test_files:
|
|
test_path = test_dir / test_file
|
|
if test_path.exists():
|
|
existing_tests.append(str(test_path))
|
|
else:
|
|
print(f"警告: 测试文件不存在 {test_file}")
|
|
|
|
if not existing_tests:
|
|
print("错误: 没有找到测试文件")
|
|
return False
|
|
|
|
print(f"找到 {len(existing_tests)} 个测试文件")
|
|
|
|
# 运行测试
|
|
start_time = time.time()
|
|
|
|
# pytest参数
|
|
args = [
|
|
"-v", # 详细输出
|
|
"--tb=short", # 简短的错误回溯
|
|
"--durations=10", # 显示最慢的10个测试
|
|
] + existing_tests
|
|
|
|
result = pytest.main(args)
|
|
|
|
elapsed_time = time.time() - start_time
|
|
|
|
print(f"\n测试完成,用时: {elapsed_time:.2f}秒")
|
|
|
|
if result == 0:
|
|
print("✅ 所有测试通过!")
|
|
return True
|
|
else:
|
|
print("❌ 部分测试失败")
|
|
return False
|
|
|
|
|
|
def run_quick_tests():
|
|
"""运行快速测试(跳过性能测试)"""
|
|
print("快速测试模式")
|
|
print("=" * 30)
|
|
|
|
test_dir = Path(__file__).parent
|
|
|
|
args = [
|
|
"-v",
|
|
"-k", "not performance and not slow", # 跳过性能测试
|
|
str(test_dir)
|
|
]
|
|
|
|
result = pytest.main(args)
|
|
return result == 0
|
|
|
|
|
|
if __name__ == "__main__":
|
|
import argparse
|
|
|
|
parser = argparse.ArgumentParser(description="运行Deep2048测试套件")
|
|
parser.add_argument("--quick", action="store_true", help="快速测试模式")
|
|
|
|
args = parser.parse_args()
|
|
|
|
if args.quick:
|
|
success = run_quick_tests()
|
|
else:
|
|
success = run_all_tests()
|
|
|
|
sys.exit(0 if success else 1)
|