# UI-Test **Repository Path**: hankaizhou/ui-test ## Basic Information - **Project Name**: UI-Test - **Description**: UI-AUTO:专注于UI自动化测试的开源项目,提供高效的测试框架和工具,支持多种平台和语言,助力开发者提升测试效率与质量。 - **Primary Language**: Unknown - **License**: AGPL-3.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-12-20 - **Last Updated**: 2026-03-31 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # UI自动化测试项目 ## 项目概述 这是一个基于Python的企业级UI自动化测试项目,集成了Selenium和Playwright两种自动化测试框架,提供了完整的测试解决方案。项目采用Page Object Model (POM)设计模式,实现了配置管理、数据库操作、日志系统等企业级功能。 ### 主要特性 - **双框架支持**:同时支持Selenium和Playwright,满足不同场景的测试需求 - **Page Object Model**:采用POM设计模式,提高代码可维护性和可复用性 - **企业级数据库功能**:支持数据库连接池、参数化查询、事务管理等高级功能 - **企业级日志系统**:支持独立日志文件、日志轮转、自动归档等功能 - **配置管理**:使用YAML配置文件,支持多环境配置 - **全面的测试用例**:覆盖功能测试、兼容性测试、安全性测试和性能测试 - **参数化测试**:支持数据驱动测试,提高测试覆盖率 ## 目录结构 ``` UI_first/ ├── main.py # 主脚本文件 ├── playwright_test.py # Playwright测试脚本 ├── config/ # 配置目录 │ ├── config.py # 配置管理模块 │ ├── config.yaml # YAML配置文件 │ └── auth_token.txt # 认证令牌存储 ├── pages/ # 页面对象模型目录 │ └── login_page.py # 登录页面PO ├── tests/ # 测试目录 │ └── login/ # 登录测试 │ ├── TEST_CASES.md # 测试用例文档 │ ├── test_data.py # 测试数据管理 │ ├── test_login_compatibility.py # 兼容性测试 │ ├── test_login_functional.py # 功能测试 │ ├── test_login_parametrized.py # 参数化测试 │ ├── test_login_performance.py # 性能测试 │ └── test_login_security.py # 安全测试 ├── utils/ # 工具目录 │ ├── auth_utils.py # 认证工具 │ ├── db/ # 数据库工具 │ │ ├── connection.py # 数据库连接管理 │ │ ├── crud.py # CRUD操作 │ │ ├── transaction.py # 事务管理 │ │ ├── cache.py # 缓存管理 │ │ └── __init__.py │ └── logs/ # 日志工具 │ ├── core.py # 核心日志功能 │ ├── config.py # 日志配置 │ ├── archive.py # 日志归档 │ └── __init__.py ├── logs/ # 日志输出目录 └── .venv/ # 虚拟环境 ``` ## 安装说明 ### 1. 克隆项目 ```bash git clone <项目地址> cd UI_first ``` ### 2. 创建虚拟环境 ```bash python -m venv .venv ``` ### 3. 激活虚拟环境 - **Windows**: ```bash .venv\Scripts\activate ``` - **Linux/Mac**: ```bash source .venv/bin/activate ``` ### 4. 安装依赖 ```bash pip install -r requirements.txt ``` ### 5. 安装Playwright浏览器 ```bash playwright install ``` ## 配置说明 ### 配置文件结构 项目使用YAML格式的配置文件 `config/config.yaml`,包含以下配置项: - **base_url**: 测试网站的基础URL - **browser**: 浏览器配置(类型、超时时间等) - **credentials**: 测试账号信息 - **database**: 数据库连接信息 ### 配置示例 ```yaml # config/config.yaml # 基础配置 base_url: "https://test.doss.donson.com.cn" browser: type: "chromium" timeout: 30 headless: false # 测试账号(敏感信息请在本地 config.yaml 中配置) credentials: username: "" password: "" # 数据库配置(敏感信息请在本地 config.yaml 中配置) database: host: "" port: 3306 user: "" password: "" db: "" charset: "utf8mb4" ``` ## 使用方法 ### 运行Playwright测试 ```bash python playwright_test.py ``` ### 运行Selenium测试 ```bash python main.py ``` ### 运行测试用例 ```bash # 运行功能测试 pytest tests/login/test_login_functional.py -v # 运行兼容性测试 pytest tests/login/test_login_compatibility.py -v # 运行安全性测试 pytest tests/login/test_login_security.py -v # 运行性能测试 pytest tests/login/test_login_performance.py -v # 运行参数化测试 pytest tests/login/test_login_parametrized.py -v ``` ## 核心功能 ### 1. 页面对象模型 (POM) 项目采用POM设计模式,将页面元素和操作封装到页面对象中,提高代码可维护性。 **示例**: ```python # pages/login_page.py from playwright.sync_api import sync_playwright class LoginPage: URL = "https://test.doss.donson.com.cn" USERNAME_INPUT = "//input[@type='text']" PASSWORD_INPUT = "//input[@type='password']" LOGIN_BUTTON = "//button[@type='button']" def login(self): # 登录逻辑 pass ``` ### 2. 数据库操作 项目提供了企业级数据库功能,支持连接池、参数化查询、事务管理等高级特性。 **示例**: ```python from utils.db import get_connection # 获取数据库连接 with get_connection() as conn: # 执行查询 with conn.cursor() as cursor: cursor.execute("SELECT * FROM users WHERE id = %s", (user_id,)) result = cursor.fetchone() ``` ### 3. 日志系统 项目实现了企业级日志系统,支持独立日志文件、日志轮转、自动归档等功能。 **示例**: ```python from utils.logs import logger # 记录日志 logger.info("开始执行登录测试") try: # 测试逻辑 logger.success("登录测试执行成功") except Exception as e: logger.error(f"登录测试执行失败: {e}") ``` ### 4. 配置管理 项目使用YAML配置文件,支持多环境配置,方便在不同环境间切换。 **示例**: ```python from config.config import get_config # 获取配置 config = get_config() base_url = config["base_url"] username = config["credentials"]["username"] password = config["credentials"]["password"] ``` ## 测试用例 项目包含全面的测试用例,覆盖功能测试、兼容性测试、安全性测试和性能测试。 ### 功能测试 - 正常登录 - 异常登录(无效凭据、空字段等) - 登录后跳转验证 ### 兼容性测试 - 不同浏览器测试 - 不同屏幕分辨率测试 - 不同网络环境测试 ### 安全性测试 - 密码安全性测试 - 登录尝试限制测试 - 敏感信息保护测试 ### 性能测试 - 登录响应时间测试 - 页面加载时间测试 - 并发登录测试 ## 最佳实践 1. **遵循POM设计模式**:将页面元素和操作封装到页面对象中 2. **使用配置管理**:避免硬编码,使用配置文件管理环境变量 3. **合理使用日志**:记录关键操作和异常信息 4. **参数化测试**:使用数据驱动测试,提高测试覆盖率 5. **异常处理**:合理处理异常,提高测试稳定性 6. **代码复用**:提取公共方法,减少代码冗余 7. **定期清理**:定期清理日志文件和临时文件 ## 常见问题 ### 1. 浏览器启动失败 **解决方案**: - 确保已安装对应浏览器 - 检查浏览器驱动是否正确配置 - 尝试使用不同的浏览器类型 ### 2. 数据库连接失败 **解决方案**: - 检查数据库配置是否正确 - 确保数据库服务正在运行 - 检查网络连接是否正常 ### 3. 测试用例执行失败 **解决方案**: - 检查页面元素定位是否正确 - 增加适当的等待时间 - 检查测试数据是否有效 - 查看日志文件获取详细错误信息 ### 4. 日志文件过大 **解决方案**: - 项目已配置日志轮转,会自动分割大日志文件 - 日志系统会自动归档旧日志文件 - 可在配置文件中调整日志级别和轮转策略 ## 技术栈 - **编程语言**:Python - **自动化框架**:Selenium, Playwright - **测试框架**:pytest - **配置管理**:YAML - **数据库**:MySQL (pymysql) - **日志系统**:自定义企业级日志系统 - **设计模式**:Page Object Model ## 贡献指南 1. **Fork** 本项目 2. **创建** 你的特性分支 (`git checkout -b feature/amazing-feature`) 3. **提交** 你的更改 (`git commit -m 'Add some amazing feature'`) 4. **推送到** 分支 (`git push origin feature/amazing-feature`) 5. **创建** 一个新的 Pull Request ## 许可证 本项目采用 MIT 许可证 - 详见 [LICENSE](LICENSE) 文件 ## 联系方式 - **项目维护者**:[Your Name] - **邮箱**:[your.email@example.com] - **问题反馈**:请在 GitHub 上提交 Issue --- *项目遵循企业级开发标准,代码质量高,可直接用于生产环境的自动化测试。*