51 lines
1.1 KiB
Python
51 lines
1.1 KiB
Python
#!/usr/bin/env python
|
|
"""
|
|
运行测试脚本 - 执行所有测试并生成报告
|
|
"""
|
|
import subprocess
|
|
import sys
|
|
from pathlib import Path
|
|
|
|
|
|
def run_tests(coverage: bool = False) -> int:
|
|
"""运行测试"""
|
|
project_root = Path(__file__).parent.parent
|
|
|
|
cmd = [sys.executable, "-m", "pytest", "tests/", "-v"]
|
|
|
|
if coverage:
|
|
cmd.extend([
|
|
"--cov=.",
|
|
"--cov-report=html",
|
|
"--cov-report=term-missing"
|
|
])
|
|
|
|
print(f"运行命令: {' '.join(cmd)}")
|
|
print("-" * 60)
|
|
|
|
try:
|
|
result = subprocess.run(cmd, cwd=project_root)
|
|
return result.returncode
|
|
except Exception as e:
|
|
print(f"运行测试失败: {e}")
|
|
return 1
|
|
|
|
|
|
def main():
|
|
"""主函数"""
|
|
import argparse
|
|
|
|
parser = argparse.ArgumentParser(description="运行测试")
|
|
parser.add_argument(
|
|
"--coverage", "-c",
|
|
action="store_true",
|
|
help="生成覆盖率报告"
|
|
)
|
|
|
|
args = parser.parse_args()
|
|
|
|
return run_tests(coverage=args.coverage)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
sys.exit(main()) |