# test **Repository Path**: z2980704803/test ## Basic Information - **Project Name**: test - **Description**: 用于学习测试案例 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-01-17 - **Last Updated**: 2026-07-26 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # E2E 测试框架 基于 **Python + Playwright + pytest** 的端到端测试框架,自带**日志生成**与**页面视图测试结果**(自包含 HTML 报告,含失败截图)。 ## 目录结构 ``` test_framework/ ├── config.py # 全局配置(浏览器、URL、路径、日志格式) ├── conftest.py # pytest 配置:浏览器管理、截图、报告收集 ├── run_tests.py # 运行入口 ├── pytest.ini # pytest 配置 ├── requirements.txt # 依赖 ├── framework/ │ ├── logger.py # 日志生成器(控制台彩色 + 文件,步骤记录) │ └── reporter.py # HTML 报告生成器(页面视图测试结果) ├── tests/ │ ├── test_homepage.py # 待办核心流程测试(含 1 个故意失败用例) │ └── test_interactions.py # 交互细节测试 ├── demo_app/ │ └── index.html # 被测示例应用(Todo 待办事项) ├── logs/ # 日志输出(按运行时间戳) └── reports/ # HTML 报告 + 失败截图 └── screenshots/ ``` ## 安装 ```bash # 1. 安装依赖 pip install -r requirements.txt # 2. 安装 Playwright 浏览器(首次必须) python -m playwright install chromium ``` ## 运行 ```bash # 运行全部测试 python run_tests.py # 只运行名称含 add 的用例 python run_tests.py -k add # 有头模式(可见浏览器窗口,调试用) python run_tests.py --headed # 指定浏览器 BROWSER=firefox python run_tests.py ``` ## 查看结果 - **日志**:`logs/test_run_<时间戳>.log`(控制台同步彩色输出) - **HTML 报告**:`reports/report_<时间戳>.html`(用浏览器打开即可,自包含、可离线分享) 报告含:摘要卡片、通过率环形图、用例详情表(可筛选/展开)、失败用例错误堆栈与截图。 ## 配置说明(config.py) | 配置项 | 说明 | 默认值 | |--------|------|--------| | `APP_URL` | 被测地址 | `demo_app/index.html` | | `BROWSER` | 浏览器 | `chromium` | | `HEADLESS` | 无头模式 | `true` | | `VIEWPORT` | 视口大小 | `1280×720` | | `LOG_LEVEL` | 日志级别 | `INFO` | 可改 `APP_URL` 为任意线上地址并将 `USE_FILE_PROTOCOL` 设为 `False`,即可测试真实网站。 ## 编写测试 ```python from framework.logger import LoggerMixin class TestFeature(LoggerMixin): def test_something(self, page): # page 由 conftest 自动注入 self.step("打开页面") # 记录步骤(写入日志) page.locator("#btn").click() self.check("验证结果") assert page.locator(".result").is_visible() ``` `page` fixture 会自动打开被测首页,失败时自动截图并附入报告。