Files
everything-is-suitable/everything-is-suitable-test/python_e2e/README.md
T
张翔 08ea5fbe98 feat(admin): 添加用户管理相关文件
添加用户管理视图、API和状态管理文件
2026-03-28 14:37:29 +08:00

270 lines
6.2 KiB
Markdown

# 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. 安装依赖
```bash
pip install -r requirements.txt
```
### 2. 安装Playwright浏览器
```bash
python -m playwright install chromium
```
### 3. 运行测试
```bash
# 运行所有测试
./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. 查看报告
```bash
# HTML报告
open reports/html/test_report.html
# Allure报告
allure serve reports/allure-results
```
## 配置说明
### 环境配置
编辑 `config/config.yaml` 文件配置不同环境:
```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`: 基础URL
- `TEST_API_URL`: API URL
- `TEST_HEADLESS`: 是否无头模式 (true/false)
## 测试用例编写规范
### 基本结构
```python
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. 元素定位策略
优先使用以下定位方式:
1. `data-testid` 属性
2. ARIA属性
3. 角色定位
4. 文本定位
5. CSS选择器
6. XPath(最后选择)
### 2. 测试数据管理
- 使用数据工厂生成动态数据
- 避免硬编码测试数据
- 测试后清理数据
### 3. 测试独立性
- 每个测试用例独立执行
- 不依赖其他测试的执行顺序
- 使用夹具准备测试环境
### 4. 断言策略
- 使用明确的断言消息
- 验证关键业务逻辑
- 避免过度断言
## 故障排除
### 测试失败常见原因
1. **元素未找到**
- 检查元素定位器是否正确
- 增加等待时间
- 检查页面是否完全加载
2. **超时错误**
- 增加超时配置
- 检查网络连接
- 检查服务是否正常运行
3. **浏览器崩溃**
- 重启测试
- 检查系统资源
- 更新Playwright版本
### 调试技巧
1. **启用可视化模式**
```bash
./scripts/run_tests.sh --headed
```
2. **启用慢动作**
修改 `pytest.ini` 中的 `--slowmo` 参数
3. **查看截图**
测试失败时自动保存截图到 `reports/screenshots/`
4. **查看日志**
日志文件保存在 `logs/` 目录
## 贡献指南
### 代码规范
- 遵循PEP 8编码规范
- 使用类型注解
- 编写文档字符串
- 添加适当的注释
### 提交规范
- 使用清晰的提交信息
- 一个提交只包含一个功能
- 提交前运行测试
## 许可证
MIT License
## 联系方式
如有问题或建议,请联系项目维护者。