# python_test **Repository Path**: aoriyfox/python_test ## Basic Information - **Project Name**: python_test - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-04-09 - **Last Updated**: 2025-04-10 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Web 自动化测试框架 ## 项目简介 这是一个基于 Python 的现代化 Web 自动化测试框架,集成了 UI 自动化测试和 API 自动化测试能力。框架采用 Playwright 作为 UI 自动化引擎,结合 Page Object 设计模式,并集成了性能监控、AI 辅助等扩展功能,为 Web 应用提供全方位的自动化测试解决方案。 ## 技术栈 - Python 3.10+ - Pytest:测试框架 - Playwright:现代 Web 测试和自动化框架 - Requests:API 测试库 - Pydantic:数据验证 - Allure:测试报告生成器 ## 项目结构 ``` . ├── core/ # 核心功能模块 │ ├── api/ # API测试相关组件 │ │ ├── client.py # API客户端 │ │ ├── models.py # 数据模型 │ │ └── validator.py # 数据验证 │ ├── utils/ # 通用工具类 │ │ ├── config.py # 配置管理 │ │ ├── data.py # 数据处理 │ │ └── logger.py # 日志管理 │ └── webui/ # UI测试相关组件 │ ├── browser.py # 浏览器管理 │ ├── elements.py # 元素操作封装 │ └── wait.py # 等待机制 ├── extensions/ # 扩展功能 │ ├── ai_helper.py # AI辅助功能 │ └── perf_monitor.py # 性能监控 ├── page_objects/ # 页面对象 ├── reports/ # 测试报告和日志 │ ├── logs/ # 日志文件 │ └── screenshots/ # 失败截图 ├── test_cases/ # 测试用例 │ ├── api/ # API测试用例 │ └── ui/ # UI测试用例 └── test_data/ # 测试数据 ``` ## 主要功能 1. **UI 自动化测试** - 基于 Playwright 的现代浏览器自动化 - 支持 Chromium、Firefox 和 WebKit 三大浏览器引擎 - 内置强大的自动等待机制 - 页面对象模式封装 - 测试失败自动截图 2. **API 自动化测试** - REST API 客户端封装 - 请求/响应数据模型 - 接口数据验证 3. **扩展功能** - AI 辅助测试 - 性能监控 - 详细日志记录 - 灵活的配置管理 ## 快速开始 ### 环境准备 1. 安装 Python 3.10+ 2. 安装依赖包: ```bash pip install -r requirements.txt ``` 3. 安装 Playwright 浏览器: ```bash playwright install ``` ### 配置 1. 复制环境变量模板: ```bash cp .env.example .env ``` 2. 配置.env 文件中的必要参数: ```ini # 浏览器配置 BROWSER_TYPE=chromium # 支持:chromium、firefox、webkit HEADLESS=false IMPLICIT_WAIT=10 # API配置 BASE_URL=https://api.example.com API_TIMEOUT=30 ``` ### 运行测试 1. 运行所有测试: ```bash pytest ``` 2. 运行特定类型的测试: ```bash # UI测试 pytest test_cases/ui/ # API测试 pytest test_cases/api/ ``` 3. 指定浏览器运行 UI 测试: ```bash pytest test_cases/ui/ --browser-type chromium ``` 4. 生成 Allure 报告: ```bash pytest --alluredir=./reports/allure allure serve ./reports/allure ``` ## 开发指南 ### 添加新的页面对象 1. 在`page_objects/`目录下创建新的页面类: ```python from core.webui.elements import BasePage class LoginPage(BasePage): def __init__(self, page): super().__init__(page) self.username_input = page.locator("#username") self.password_input = page.locator("#password") self.login_button = page.locator("button[type='submit']") async def login(self, username: str, password: str): await self.username_input.fill(username) await self.password_input.fill(password) await self.login_button.click() ``` ### 编写测试用例 1. 在`test_cases/`目录下创建测试文件: ```python import pytest from page_objects.login_page import LoginPage def test_login(page): login_page = LoginPage(page) login_page.login("user@example.com", "password") assert page.url == "https://example.com/dashboard" ``` ### 使用扩展功能 1. 性能监控: ```python from extensions.perf_monitor import perf_monitor @perf_monitor def test_performance(): # 测试代码 pass ``` 2. AI 辅助分析: ```python from extensions.ai_helper import analyze_test_failure def test_with_ai(page): try: # 测试代码 pass except Exception as e: analyze_test_failure(e) ``` ## 最佳实践 1. **页面对象模式** - 将页面元素和操作封装在页面类中 - 保持页面对象的独立性和可复用性 2. **测试用例设计** - 每个测试用例只测试一个功能点 - 使用合适的测试夹具(fixtures) - 保持测试数据的独立性 3. **配置管理** - 使用环境变量管理配置 - 区分开发、测试、生产环境 4. **错误处理** - 实现适当的重试机制 - 捕获和记录详细的错误信息 - 测试失败时自动截图 ## 常见问题 1. **浏览器启动失败** - 检查 Playwright 浏览器是否正确安装 - 验证环境变量配置 - 查看详细错误日志 2. **元素定位超时** - 检查元素选择器是否正确 - 调整等待时间和策略 - 确认页面是否完全加载 3. **测试环境问题** - 确保所有依赖都已正确安装 - 验证环境变量配置 - 检查网络连接状态 ## 维护指南 1. 定期更新依赖包 2. 清理测试报告和日志文件 3. 更新测试数据 4. 检查并修复失败的测试用例 5. 持续优化测试脚本性能