# 测试框架搭建 — 设计说明 > 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、配置、示例用例 - ❌ 不包含: 运八完整业务用例(后续按需求逐步添加)