Files
张翔 08ea5fbe98 feat(admin): 添加用户管理相关文件
添加用户管理视图、API和状态管理文件
2026-03-28 14:37:29 +08:00

112 lines
3.3 KiB
Python

"""
全面系统测试执行脚本
执行所有测试并生成详细报告。
"""
import subprocess
import sys
from pathlib import Path
from datetime import datetime
def run_command(cmd, description):
"""运行命令并返回结果"""
print(f"\n{'='*60}")
print(f"🧪 {description}")
print(f"{'='*60}")
print(f"命令: {cmd}")
print("")
result = subprocess.run(cmd, shell=True, capture_output=True, text=True)
if result.stdout:
print(result.stdout)
if result.stderr:
print("STDERR:", result.stderr)
return result.returncode == 0
def main():
"""主函数"""
print("🚀 开始全面系统测试")
print(f"时间: {datetime.now().strftime('%Y-%m-%d %H:%M:%S')}")
# 创建报告目录
report_dir = Path("reports")
report_dir.mkdir(exist_ok=True)
results = {}
# 1. 冒烟测试
results["冒烟测试"] = run_command(
"python -m pytest tests/ -m smoke -v --tb=short -q --no-header 2>&1 | head -50",
"Phase 1: 冒烟测试"
)
# 2. Admin端认证测试
results["Admin认证"] = run_command(
"python -m pytest tests/web/test_auth.py -v --tb=short -q --no-header 2>&1 | head -50",
"Phase 2: Admin端认证测试"
)
# 3. Admin端用户管理测试
results["Admin用户管理"] = run_command(
"python -m pytest tests/web/test_user_management.py -v --tb=short -q --no-header 2>&1 | head -50",
"Phase 3: Admin端用户管理测试"
)
# 4. Uniapp端黄历测试
results["Uniapp黄历"] = run_command(
"python -m pytest tests/uniapp/test_almanac.py -v --tb=short -q --no-header 2>&1 | head -50",
"Phase 4: Uniapp端黄历测试"
)
# 5. Uniapp端日历测试
results["Uniapp日历"] = run_command(
"python -m pytest tests/uniapp/test_calendar.py -v --tb=short -q --no-header 2>&1 | head -50",
"Phase 5: Uniapp端日历测试"
)
# 生成报告
print(f"\n{'='*60}")
print("📊 测试执行报告")
print(f"{'='*60}")
passed = sum(1 for v in results.values() if v)
total = len(results)
print(f"\n总测试项: {total}")
print(f"通过: {passed}")
print(f"失败: {total - passed}")
print(f"通过率: {passed/total*100:.1f}%")
print("\n详细结果:")
for name, result in results.items():
status = "✅ 通过" if result else "❌ 失败"
print(f" {status} - {name}")
# 保存报告
report_file = report_dir / f"test_report_{datetime.now().strftime('%Y%m%d_%H%M%S')}.txt"
with open(report_file, "w") as f:
f.write(f"测试执行报告\n")
f.write(f"时间: {datetime.now().strftime('%Y-%m-%d %H:%M:%S')}\n")
f.write(f"总测试项: {total}\n")
f.write(f"通过: {passed}\n")
f.write(f"失败: {total - passed}\n")
f.write(f"通过率: {passed/total*100:.1f}%\n\n")
f.write("详细结果:\n")
for name, result in results.items():
status = "通过" if result else "失败"
f.write(f" {status} - {name}\n")
print(f"\n📄 报告已保存: {report_file}")
# 返回退出码
return 0 if all(results.values()) else 1
if __name__ == "__main__":
sys.exit(main())