e2ad1331cc
feat(测试): 新增Playwright和Vitest测试配置 feat(测试): 添加测试覆盖率报告生成功能 feat(测试): 实现前后端测试脚本集成 fix(测试): 修复测试密码不匹配问题 fix(测试): 修正URL等待策略 fix(测试): 调整错误消息选择器 refactor(测试): 重构测试目录结构 refactor(测试): 优化测试用例组织方式 docs: 更新测试报告文档 docs: 添加测试覆盖率报告模板 ci: 添加Docker测试环境配置 ci: 实现测试自动化脚本 chore: 更新依赖版本 chore: 添加测试相关配置文件
E2E和UAT自动化测试框架
📋 概述
这是一个完整的端到端(E2E)和用户验收测试(UAT)自动化测试框架,基于Python Playwright实现,支持Novalon管理系统的全面自动化测试。
🎯 主要特性
- ✅ 完整的E2E测试覆盖 - 涵盖所有关键业务流程
- ✅ UAT用户验收测试 - 模拟真实用户操作场景
- ✅ 自动化测试执行 - 一键运行所有测试
- ✅ 详细的测试报告 - 生成HTML和JSON格式的测试报告
- ✅ 服务器自动管理 - 自动启动和停止测试服务器
- ✅ 测试数据管理 - 自动化的测试数据初始化和清理
- ✅ 截图和日志 - 失败时自动截图和记录详细日志
- ✅ 并发测试支持 - 支持并发操作和边界场景测试
📁 项目结构
novalon-manage-system/
├── scripts/
│ ├── server_manager.py # 服务器管理脚本
│ ├── e2e_uat_automation.py # E2E和UAT自动化测试主脚本
│ ├── test_report_generator.py # 测试报告生成器
│ ├── run_e2e_uat.sh # 测试运行Shell脚本
│ └── requirements.txt # Python依赖
├── test_screenshots/ # 测试截图目录
├── test_logs/ # 测试日志目录
└── test_reports/ # 测试报告目录
🚀 快速开始
1. 安装依赖
cd scripts
pip install -r requirements.txt
playwright install --with-deps
2. 配置环境
确保以下服务可用:
- 后端API服务:http://localhost:8084
- 前端Web服务:http://localhost:3003
- PostgreSQL数据库:localhost:55432
3. 运行测试
方式一:使用Shell脚本(推荐)
# 执行完整测试流程(启动服务器+运行测试+清理)
./scripts/run_e2e_uat.sh run
# 仅启动服务器
./scripts/run_e2e_uat.sh start
# 仅运行测试
./scripts/run_e2e_uat.sh test
# 仅停止服务器
./scripts/run_e2e_uat.sh stop
# 清理测试环境
./scripts/run_e2e_uat.sh cleanup
# 生成测试报告
./scripts/run_e2e_uat.sh report
方式二:使用Python脚本
# 运行E2E和UAT测试(无头模式)
python scripts/e2e_uat_automation.py
# 运行测试(有头模式,可以看到浏览器操作)
python scripts/e2e_uat_automation.py --headed
# 自定义URL和超时时间
python scripts/e2e_uat_automation.py \
--base-url http://localhost:3003 \
--api-url http://localhost:8084 \
--timeout 30000
方式三:使用服务器管理脚本
# 启动所有服务器
python scripts/server_manager.py start --server all
# 启动特定服务器
python scripts/server_manager.py start --server backend
python scripts/server_manager.py start --server frontend
# 停止所有服务器
python scripts/server_manager.py stop --server all
# 重启服务器
python scripts/server_manager.py restart --server all
# 查看服务器状态
python scripts/server_manager.py status --server all
📊 测试用例
TC-001: 完整登录流程
- 测试管理员登录
- 验证Dashboard页面加载
- 验证登录日志记录
- 测试普通用户登录
TC-002: 角色管理完整流程
- 导航到角色管理页面
- 验证字段映射
- 创建新角色
- 编辑角色信息
- 删除角色
TC-003: 菜单管理数据验证
- 导航到菜单管理页面
- 验证菜单树结构
- 验证一级和二级菜单
- 通过API验证字段映射
TC-004: 前后端字段映射一致性
- 验证角色API字段映射
- 验证菜单API字段映射
- 验证用户API字段映射
TC-005: RBAC权限验证
- 测试管理员权限
- 测试普通用户权限
- 测试未授权访问拦截
TC-006: 空数据处理
- 测试角色空数据
- 测试菜单空数据
TC-007: 异常输入处理
- 测试重复角色标识
- 测试空用户名登录
- 测试空密码登录
TC-008: 并发操作测试
- 测试多用户并发编辑
- 验证并发冲突处理
📈 测试报告
测试完成后会自动生成以下报告:
-
HTML报告 - 交互式HTML报告,包含:
- 测试摘要统计
- 详细测试结果
- 失败截图
- 错误信息
- 测试步骤
-
JSON报告 - 机器可读的JSON格式报告
-
文本报告 - 简洁的文本格式报告
报告位置:
test_reports/test_report_YYYYMMDD_HHMMSS.htmltest_reports/test_report_YYYYMMDD_HHMMSS.jsontest_reports/E2E_UAT_Report_YYYYMMDD_HHMMSS.txt
🔧 配置说明
测试配置
可以在 e2e_uat_automation.py 中修改 TestConfig 类来调整测试配置:
@dataclass
class TestConfig:
base_url: str = "http://localhost:3003" # 前端URL
api_url: str = "http://localhost:8084" # 后端URL
headless: bool = True # 无头模式
timeout: int = 30000 # 超时时间(毫秒)
screenshot_dir: str = "test_screenshots" # 截图目录
测试用户配置
测试用户信息:
admin_user = {
"username": "admin",
"password": "admin123",
"expected_role": "超级管理员"
}
test_user = {
"username": "test_user",
"password": "test123",
"expected_role": "测试普通用户"
}
🐛 故障排除
问题1: 服务器启动失败
解决方案:
# 检查端口占用
lsof -i :8084
lsof -i :3003
# 杀死占用端口的进程
lsof -ti:8084 | xargs kill -9
lsof -ti:3003 | xargs kill -9
问题2: 测试超时
解决方案:
- 增加超时时间:
--timeout 60000 - 检查服务器是否正常运行
- 检查网络连接
问题3: Playwright浏览器未安装
解决方案:
playwright install --with-deps
问题4: 测试数据问题
解决方案:
# 重新初始化测试数据
cd novalon-manage-api/manage-app
mvn flyway:clean flyway:migrate
📝 最佳实践
- 定期运行测试 - 在每次代码提交前运行测试
- 维护测试数据 - 定期更新测试数据以反映业务变化
- 分析失败原因 - 仔细分析测试失败的根本原因
- 更新测试用例 - 根据业务需求更新测试用例
- 保持测试独立性 - 确保测试用例之间相互独立
- 使用版本控制 - 将测试脚本纳入版本控制
🤝 贡献指南
- Fork项目
- 创建特性分支
- 提交更改
- 推送到分支
- 创建Pull Request
📄 许可证
本项目采用MIT许可证。
📞 支持
如有问题,请联系:
- 项目负责人:张翔
- 邮箱:zhangxiang@novalon.com
🔄 更新日志
v1.0.0 (2024-03-24)
- ✅ 初始版本发布
- ✅ 实现完整的E2E测试框架
- ✅ 实现UAT测试用例
- ✅ 实现自动化测试报告
- ✅ 实现服务器自动管理
- ✅ 实现测试数据管理
注意: 本测试框架仅用于开发和测试环境,请勿在生产环境中运行。