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:
xst
2026-07-15 10:24:22 +08:00
parent 26ef99f7e7
commit aade9e39d0
17 changed files with 1034 additions and 0 deletions
@@ -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、配置、示例用例
- ❌ 不包含: 运八完整业务用例(后续按需求逐步添加)