CodeReview/backend/tests/agent/run_tests.py

97 lines
2.2 KiB
Python

#!/usr/bin/env python
"""
Agent 测试运行器
运行所有 Agent 相关测试并生成报告
"""
import subprocess
import sys
import os
from datetime import datetime
from pathlib import Path
def run_tests():
"""运行测试"""
# 获取项目根目录
project_root = Path(__file__).parent.parent.parent
os.chdir(project_root)
print("=" * 60)
print("DeepAudit Agent 测试套件")
print(f"时间: {datetime.now().strftime('%Y-%m-%d %H:%M:%S')}")
print("=" * 60)
print()
# 测试命令
cmd = [
sys.executable, "-m", "pytest",
"tests/agent/",
"-v",
"--tb=short",
"-x", # 遇到第一个失败就停止
"--color=yes",
]
print(f"运行命令: {' '.join(cmd)}")
print()
# 运行测试
result = subprocess.run(cmd, cwd=project_root)
print()
print("=" * 60)
if result.returncode == 0:
print("✅ 所有测试通过!")
else:
print(f"❌ 测试失败 (退出码: {result.returncode})")
print("=" * 60)
return result.returncode
def run_tests_with_coverage():
"""运行测试并生成覆盖率报告"""
project_root = Path(__file__).parent.parent.parent
os.chdir(project_root)
cmd = [
sys.executable, "-m", "pytest",
"tests/agent/",
"-v",
"--cov=app/services/agent",
"--cov-report=term-missing",
"--cov-report=html:coverage_agent",
]
result = subprocess.run(cmd, cwd=project_root)
return result.returncode
def run_specific_test(test_name: str):
"""运行特定测试"""
project_root = Path(__file__).parent.parent.parent
os.chdir(project_root)
cmd = [
sys.executable, "-m", "pytest",
f"tests/agent/{test_name}",
"-v",
"--tb=long",
"-s", # 显示 print 输出
]
result = subprocess.run(cmd, cwd=project_root)
return result.returncode
if __name__ == "__main__":
if len(sys.argv) > 1:
if sys.argv[1] == "--coverage":
sys.exit(run_tests_with_coverage())
else:
sys.exit(run_specific_test(sys.argv[1]))
else:
sys.exit(run_tests())