# 自动化测试 **Repository Path**: xuwenlongl/automated-testing-framework ## Basic Information - **Project Name**: 自动化测试 - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-08-09 - **Last Updated**: 2026-09-29 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Web 自动化测试框架 基于 pytest + Playwright 的混合 Web 系统自动化测试框架,支持 UI / API / E2E 三种测试类型,且支持**多被测项目**(yudao / antd)。 ## 技术栈 - Python 3.11+ - pytest + pytest-playwright(同步 API) - allure-pytest(测试报告) - pytest-rerunfailures(失败重试) - requests(API 测试) - faker(测试数据生成) - PyYAML(配置管理) ## 多项目 框架通过 `TEST_PROJECT` 环境变量选择被测项目(默认 `yudao`,向后兼容): ```powershell $env:TEST_PROJECT="yudao" # 默认 $env:TEST_PROJECT="antd" ``` 每个项目独立目录 `projects//`,包含各自的配置 / POM / 用例 / 报告: - **yudao** — 芋道 yudao-vue-pro(Element Plus,已完整接入) - **antd** — AntD 项目(骨架占位,后续接入) 跨项目共享代码放在 `common/`(config / api_client / logging)。 ## 目录结构 ``` common/ 跨项目共享:config / api_client / logging / utils projects/ 各被测项目(TEST_PROJECT 选择) yudao/ yudao-vue-pro(Element Plus) auth.py yudao 登录态(token 缓存 + 自动登录) data_factory.py yudao 数据工厂(造数 + 清理) slider_captcha.py 滑块验证码识别(自动登录用) pages/ POM(login_page / sgll_* ) tests/ 测试用例(ui / api / e2e / test_selfcheck.py) config/ 配置文件(config.yaml / config.{env}.yaml / secrets.yaml) reports/ 测试产物(traces / allure-results / logs) antd/ AntD 项目(骨架占位) scripts/ 辅助脚本(save_token / auto_save_token / probe_system ...) conftest.py 根 conftest(fixture + allure 钩子) pytest.ini pytest 配置 requirements.txt Python 依赖 run.ps1 Windows 运行脚本 Makefile Git Bash / WSL 运行脚本 ``` ## 快速开始 ### 1. 安装依赖 ```powershell # Windows python -m venv .venv .venv\Scripts\Activate.ps1 pip install -r requirements.txt playwright install chromium ``` ### 2. 配置环境 ```powershell # 复制示例配置并填值(以 yudao 为例) Copy-Item projects\yudao\config\secrets.example.yaml projects\yudao\config\secrets.yaml # 编辑 secrets.yaml,填入测试账号密码 ``` 配置采用四层合并(后者覆盖前者),目录由 `TEST_PROJECT` 决定: 1. `projects//config/config.yaml` — 基础配置(commit,无敏感信息) 2. `projects//config/config.{env}.yaml` — 环境特定(dev/staging/prod,commit) 3. `projects//config/secrets.yaml` — 敏感信息(本地,已 gitignore) 4. 环境变量(`TEST_` 前缀)— 运行时,优先级最高 切换环境: ```powershell $env:TEST_ENV="staging" pytest ``` ### 3. 获取登录 token(验证码系统) 被测系统登录需要滑块验证码,`scripts/auto_save_token.py` 已实现自动化过滑块并刷新 token 缓存。 ```powershell # 方式 A:自动刷新(推荐,滑块已解决) python scripts\auto_save_token.py # 打开浏览器自动登录 + 过滑块,将 token 写入 projects/yudao/config/.token_cache.json # 方式 B:环境变量(临时) # 浏览器登录 → F12 → Network → /admin-api/system/auth/login 响应 → 复制 data.accessToken $env:TEST_AUTH_TOKEN="粘贴accessToken值" pytest # 方式 C:手动保存(滑块失败时的兜底) python scripts\save_token.py ``` > token 优先级:环境变量 `TEST_AUTH_TOKEN` > 缓存文件 `projects//config/.token_cache.json` > token 过期后框架会 warning 提示重新获取。 ### 4. 运行冒烟测试 ```powershell .\run.ps1 smoke # Windows,默认 yudao .\run.ps1 smoke -Project antd # 指定项目 # 或 make smoke # Git Bash / WSL,默认 yudao make smoke PROJECT=antd make smoke-antd # 项目专属别名 ``` ### 5. 查看报告 ```powershell .\run.ps1 report # 启动 allure 报告(yudao) # 或 make report PROJECT=yudao make report-yudao ``` > 报告按项目分目录:`projects//reports/allure-results`、`allure-report`,互不覆盖。 ### 6. 其他命令 ```powershell .\run.ps1 test # 跑全量用例 .\run.ps1 install # 安装依赖 + 浏览器 .\run.ps1 clean # 清理测试产物 ``` ## 标记系统 | 标记 | 说明 | |------|------| | `ui` | UI 自动化用例 | | `api` | API 自动化用例 | | `e2e` | 端到端用例 | | `smoke` | 冒烟用例 | | `regression` | 回归用例 | 组合选择示例: ```bash pytest -m "ui and smoke" # UI 冒烟 pytest -m "not e2e" # 排除 E2E ``` ## 首次运行 首次运行 `.ps1` 脚本需放行执行策略: ```powershell Set-ExecutionPolicy -Scope CurrentUser RemoteSigned ``` ## 规范与变更管理(OpenSpec) 本项目使用 [OpenSpec](https://github.com/Fission-AI/OpenSpec) 管理需求与变更: - `openspec/specs/` — 已发布的能力规范(`web-ui-testing` / `web-api-testing` / `end-to-end-testing` / `test-data-factory` / `test-suite-organization` / `multi-project-support`) - `openspec/changes/` — 进行中的变更(proposal / specs / design / tasks) - `openspec/changes/archive/` — 已完成并同步到主 specs 的历史变更 常用命令: ```bash openspec list # 查看进行中变更 openspec status --change # 查看变更完成度 openspec validate --strict # 校验变更完整性 ``` 新功能或重构请通过 `/opsx:proposal` 走变更流程,不要直接改主 specs。