08ea5fbe98
添加用户管理视图、API和状态管理文件
6.2 KiB
6.2 KiB
E2E测试框架
基于Python + Playwright的端到端测试框架,支持Admin后台管理端和Uniapp客户端的双端测试。
项目结构
python_e2e/
├── config/ # 配置文件
│ └── config.yaml # 多环境配置
├── core/ # 核心框架
│ ├── config_manager.py # 配置管理器
│ ├── logger.py # 日志记录器
│ ├── exception_handler.py # 异常处理器
│ ├── retry_decorator.py # 重试装饰器
│ ├── reporter.py # 报告生成器
│ └── screenshot_helper.py # 截图辅助
├── pages/ # 页面对象模型
│ ├── base_page.py # 页面基类
│ ├── web/ # Admin端页面
│ │ ├── login_page.py
│ │ ├── dashboard_page.py
│ │ ├── user_management_page.py
│ │ ├── role_management_page.py
│ │ └── menu_management_page.py
│ └── uniapp/ # Uniapp端页面
│ ├── almanac_page.py
│ ├── calendar_page.py
│ └── user_page.py
├── test_data/ # 测试数据
│ └── factories/
│ ├── user_factory.py
│ ├── role_factory.py
│ └── almanac_factory.py
├── tests/ # 测试用例
│ ├── web/ # Admin端测试
│ │ ├── test_auth.py
│ │ ├── test_user_management.py
│ │ └── ...
│ └── uniapp/ # Uniapp端测试
│ ├── test_almanac.py
│ ├── test_calendar.py
│ └── ...
├── scripts/ # 执行脚本
│ └── run_tests.sh # 测试执行脚本
├── conftest.py # 全局夹具
├── pytest.ini # pytest配置
└── requirements.txt # 依赖包
快速开始
1. 安装依赖
pip install -r requirements.txt
2. 安装Playwright浏览器
python -m playwright install chromium
3. 运行测试
# 运行所有测试
./scripts/run_tests.sh
# 运行冒烟测试
./scripts/run_tests.sh -m smoke
# 运行Admin端测试
./scripts/run_tests.sh -m admin
# 运行Uniapp端测试
./scripts/run_tests.sh -m uniapp
# 运行指定测试文件
./scripts/run_tests.sh -p tests/web/test_auth.py
# 无头模式运行并生成报告
./scripts/run_tests.sh --headless --html --allure
4. 查看报告
# HTML报告
open reports/html/test_report.html
# Allure报告
allure serve reports/allure-results
配置说明
环境配置
编辑 config/config.yaml 文件配置不同环境:
environments:
dev:
admin:
base_url: "http://localhost:5174"
api_url: "http://127.0.0.1:8080"
uniapp:
base_url: "http://localhost:3000"
api_url: "http://127.0.0.1:8080"
环境变量
TEST_ENV: 测试环境 (dev/test/prod)TEST_BASE_URL: 基础URLTEST_API_URL: API URLTEST_HEADLESS: 是否无头模式 (true/false)
测试用例编写规范
基本结构
import pytest
import allure
from playwright.sync_api import Page
@allure.epic("Admin后台管理")
@allure.feature("用户管理模块")
class TestUserManagement:
"""用户管理测试类"""
@allure.title("创建新用户测试")
@allure.description("验证可以成功创建新用户")
@allure.severity(allure.severity_level.CRITICAL)
@pytest.mark.smoke
def test_create_user_success(self, authenticated_page: Page, user_management_page):
with allure.step("导航到用户管理页面"):
user_management_page.navigate()
assert user_management_page.is_loaded()
with allure.step("创建新用户"):
user_management_page.click_create_button()
user_management_page.fill_form_username("testuser")
user_management_page.click_form_submit()
with allure.step("验证创建成功"):
assert user_management_page.has_success_message()
标记使用
@pytest.mark.smoke: 冒烟测试@pytest.mark.regression: 回归测试@pytest.mark.admin: Admin端测试@pytest.mark.uniapp: Uniapp端测试@pytest.mark.slow: 慢速测试
核心功能
1. 配置管理
支持多环境配置,通过配置文件或环境变量设置。
2. 页面对象模型 (POM)
封装页面元素和操作,提高测试可维护性。
3. 数据工厂
使用Faker生成测试数据,支持批量数据生成。
4. 异常处理
智能异常分类,自动重试机制。
5. 报告生成
支持HTML、JSON、Allure多种报告格式。
最佳实践
1. 元素定位策略
优先使用以下定位方式:
data-testid属性- ARIA属性
- 角色定位
- 文本定位
- CSS选择器
- XPath(最后选择)
2. 测试数据管理
- 使用数据工厂生成动态数据
- 避免硬编码测试数据
- 测试后清理数据
3. 测试独立性
- 每个测试用例独立执行
- 不依赖其他测试的执行顺序
- 使用夹具准备测试环境
4. 断言策略
- 使用明确的断言消息
- 验证关键业务逻辑
- 避免过度断言
故障排除
测试失败常见原因
-
元素未找到
- 检查元素定位器是否正确
- 增加等待时间
- 检查页面是否完全加载
-
超时错误
- 增加超时配置
- 检查网络连接
- 检查服务是否正常运行
-
浏览器崩溃
- 重启测试
- 检查系统资源
- 更新Playwright版本
调试技巧
-
启用可视化模式
./scripts/run_tests.sh --headed -
启用慢动作 修改
pytest.ini中的--slowmo参数 -
查看截图 测试失败时自动保存截图到
reports/screenshots/ -
查看日志 日志文件保存在
logs/目录
贡献指南
代码规范
- 遵循PEP 8编码规范
- 使用类型注解
- 编写文档字符串
- 添加适当的注释
提交规范
- 使用清晰的提交信息
- 一个提交只包含一个功能
- 提交前运行测试
许可证
MIT License
联系方式
如有问题或建议,请联系项目维护者。