feat: 基于 UI 自动化最佳实践的测试框架骨架搭建
- tests/config: 环境配置 (.yaml) + 配置加载器 - tests/utils: 日志工具 + 测试数据生成器 - tests/web: Playwright conftest + Page Object 基类 + 登录页 + 导航栏组件 + 登录用例(6条) - tests/app: Appium conftest + Page Object 基类 + 司机端首页 + 登录用例(3条) - pytest.ini: markers(p0/p1/p2/smoke/web/app) + 运行配置 - 所有用例按最佳实践采用 Page Object 模式 + data-testid 优先定位 + 失败自动截图
This commit is contained in:
@@ -0,0 +1,65 @@
|
||||
# 测试框架搭建 — 设计说明
|
||||
|
||||
> 2026-07-15 | 状态: 已批准
|
||||
|
||||
## 目标
|
||||
|
||||
基于 `ui_automation_best_practices.md` v1.0 的最佳实践,搭建可落地的 Web + App UI 自动化测试框架骨架。后续所有测试用例都留存在 `tests/` 目录下。
|
||||
|
||||
## 交付物
|
||||
|
||||
### 文件清单
|
||||
|
||||
```
|
||||
tests/
|
||||
├── conftest.py # 根级 fixture
|
||||
├── pytest.ini # pytest 配置
|
||||
├── config/
|
||||
│ ├── test_config.yaml # 环境配置
|
||||
│ └── test_config.py # 配置加载器
|
||||
├── web/ # Web UI (Playwright)
|
||||
│ ├── conftest.py # browser/page fixture
|
||||
│ ├── pages/
|
||||
│ │ ├── base_page.py # Page Object 基类
|
||||
│ │ ├── login_page.py # 登录页
|
||||
│ │ └── components/
|
||||
│ │ └── navbar.py # 导航栏组件
|
||||
│ └── test_login/
|
||||
│ └── test_login.py # 登录用例(含参数化)
|
||||
├── app/ # App UI (Appium)
|
||||
│ ├── conftest.py # driver fixture
|
||||
│ ├── pages/
|
||||
│ │ ├── base_page.py # Page Object 基类
|
||||
│ │ └── driver_home_page.py # 司机端首页
|
||||
│ └── test_login/
|
||||
│ └── test_login.py # 登录用例
|
||||
└── utils/
|
||||
├── __init__.py
|
||||
├── logger.py # 日志工具
|
||||
└── data_helper.py # 测试数据生成/清理
|
||||
```
|
||||
|
||||
### 与最佳实践的对应
|
||||
|
||||
| 最佳实践章节 | 框架落地位置 |
|
||||
| :--- | :--- |
|
||||
| §3.3 Page Object 模式 | `web/pages/base_page.py` + `login_page.py` |
|
||||
| §3.1 定位策略 | `base_page.py` 中的封装方法优先使用 getByTestId |
|
||||
| §3.4 / §4.5 截图策略 | `conftest.py` 中 fixture 的失败自动截图 |
|
||||
| §5.1 用例独立性 | `conftest.py` 中 setup/teardown fixture |
|
||||
| §5.2 数据驱动 | `test_login.py` 中的 `@pytest.mark.parametrize` |
|
||||
| §5.3 环境配置管理 | `config/test_config.yaml` + `test_config.py` |
|
||||
| §5.4 报告与日志 | `utils/logger.py` |
|
||||
| §3.6 多浏览器 | `web/conftest.py` 中 `browser_name` fixture 参数化 |
|
||||
|
||||
## 配置数据来源
|
||||
|
||||
从 `project_profile.md` 提取:
|
||||
- BASE_URL: `https://ybxcx.ynyun8.com:8000/admin`
|
||||
- 测试账号: super_admin / 13113113113 / 15188888888
|
||||
- 注意:密码已在 profile 中声明,config 中以占位符标注
|
||||
|
||||
## 范围边界
|
||||
|
||||
- ✅ 包含: 框架骨架、基类、conftest、配置、示例用例
|
||||
- ❌ 不包含: 运八完整业务用例(后续按需求逐步添加)
|
||||
Reference in New Issue
Block a user