# EasyAutoTest **Repository Path**: lakernote/easy-auto-test ## Basic Information - **Project Name**: EasyAutoTest - **Description**: 端到端自动化测试脚手架,不是工具也不是平台。 Not a tool, not a platform, just a framework. 基于Java17+SpringBoot3.5+TestNG7.11+Playwright1.51.0开发,使用了页面对象模式和数据驱动模式方便后期版本迭代维护。 脚手架O(∩_∩)O哈哈~。 - **Primary Language**: Java - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: https://laker.blog.csdn.net - **GVP Project**: No ## Statistics - **Stars**: 15 - **Forks**: 10 - **Created**: 2024-03-03 - **Last Updated**: 2025-08-28 ## Categories & Tags **Categories**: Uncategorized **Tags**: 端到端测试, UI自动化测试, 自动化测试, playwright, 自动化测试脚手架 ## README # EasyAutoTest - 自动化测试框架 ![Java](https://img.shields.io/badge/Java-17+-blue) ![Spring Boot](https://img.shields.io/badge/Spring%20Boot-3.5.3-green) ![Playwright](https://img.shields.io/badge/Playwright-1.53.0-orange) ![TestNG](https://img.shields.io/badge/TestNG-7.11.0-red) ![Maven](https://img.shields.io/badge/Maven-3.6+-yellow) ## 📖 项目概述 EasyAutoTest 是一个端到端自动化测试框架,支持 **Web UI**、**API**、**桌面应用** 等多种自动化测试场景。基于现代化技术栈构建,提供完整的测试解决方案。 ### 🎯 核心特性 - 🌐 **多端支持**: Web UI、REST API、桌面应用自动化 - 🎨 **页面对象模式**: 基于 POM 设计模式,提高测试用例可维护性 - 📊 **数据驱动**: 支持 CSV、Excel 等多种数据源 - 🚀 **多浏览器支持**: Chrome、Firefox、Edge 等 - ⏰ **定时任务**: 支持 Cron 表达式的定时执行 - 📧 **智能通知**: 邮件报告、测试结果通知 - 📹 **错误诊断**: 自动截图、视频录制、Trace 追踪 - 🐳 **容器化部署**: 支持 Docker 镜像部署 - 📈 **测试报告**: 丰富的 HTML 报告和统计图表 ### 🛠️ 技术栈 | 技术 | 版本 | 用途 | |------|------|------| | Java | 17+ | 核心开发语言 | | Spring Boot | 3.5.3 | 应用框架 | | Playwright | 1.53.0 | Web UI 自动化 | | TestNG | 7.11.0 | 测试框架 | | OkHttp | 4.12.0 | API 测试客户端 | | OpenCV | 4.7.0 | 桌面应用图像识别 | | Hutool | 5.8.26 | 工具库 | | FreeMarker | 2.3.34 | 报告模板 | ## 🏗️ 项目架构 ``` easy-auto-test/ ├── autotest-common/ # 📦 公共核心模块 │ ├── config/ # 配置管理 │ ├── listener/ # TestNG 监听器 │ ├── reporters/ # 测试报告生成 │ ├── retry/ # 失败重试机制 │ └── utils/ # 工具类库 │ ├── autotest-webui/ # 🌐 Web UI 自动化框架 │ ├── pages/ # 页面对象模型 │ ├── driver/ # 浏览器驱动管理 │ └── actions/ # 通用操作封装 │ ├── autotest-webui-testcase/ # 🧪 Web UI 测试用例 │ ├── testcase/ # 测试用例实现 │ ├── data/ # 测试数据文件 │ └── config/ # 测试配置 │ ├── autotest-api/ # 🔌 API 自动化模块 │ ├── client/ # HTTP 客户端 │ ├── model/ # 数据模型 │ └── testcase/ # API 测试用例 │ ├── autotest-desktop/ # 🖥️ 桌面应用自动化 │ ├── capture/ # 图像捕获 │ ├── recognition/ # 图像识别 │ └── actions/ # 桌面操作 │ ├── build/ # 🏗️ 构建脚本 ├── docs/ # 📚 项目文档 ├── logs/ # 📝 日志文件 ├── report/ # 📊 测试报告 └── trace/ # 🔍 调试追踪 ``` ## 🚀 快速开始 ### 环境要求 - **Java**: 17 或更高版本 - **Maven**: 3.6 或更高版本 - **操作系统**: - Windows 10+ - macOS 12+ - Debian/Ubuntu 20.04+ - CentOS (仅支持 Docker 部署) ### 安装与配置 1. **克隆项目** ```bash git clone cd easy-auto-test ``` 2. **编译项目** ```bash # 编译所有模块 mvn clean install ``` ### 运行测试 #### Web UI 自动化测试 ```bash # 快速构建并运行 WebUI 测试 ./build-webui.sh # 或者手动执行 cd autotest-webui-testcase mvn clean test ``` #### API 自动化测试 ```bash # 快速构建并运行 API 测试 ./build-api.sh # 或者手动执行 cd autotest-api mvn clean test ``` #### 全量构建 ```bash # 构建所有模块 ./build-all.sh ``` ## 📋 使用指南 ### 1. Web UI 测试开发 #### 创建页面对象 ```java public class LoginPage extends BasePage { private Locator usernameInput; private Locator passwordInput; public void login(String username, String password) { usernameInput.fill(username); passwordInput.fill(password); // 其他操作... } } ``` #### 编写测试用例 ```java public class LoginTest extends BaseTest { @Test(dataProvider = "loginData") public void testLogin(String username, String password) { loginPage.login(username, password); // 断言验证... } @DataProvider public Object[][] loginData() { // 读取测试数据 return DataUtil.readFromCsv("login.csv"); } } ``` ### 2. API 测试开发 ```java @Test public void testUserApi() { Response response = apiClient .post("/api/users") .body(userRequest) .execute(); assertThat(response.getStatusCode()).isEqualTo(200); assertThat(response.getJsonPath("$.name")).isEqualTo("张三"); } ``` ### 3. 桌面应用测试 ```java @Test public void testDesktopApp() { // 图像识别点击 desktopActions.clickByImage("button.png"); // 键盘输入 desktopActions.type("Hello World"); // 验证界面状态 assertThat(desktopActions.findImage("success.png")).isTrue(); } ``` ## 🐳 Docker 部署 ### 构建镜像 ```bash # 构建 WebUI 测试镜像 cd autotest-webui-testcase/build ./build-image.sh # 构建 API 测试镜像 cd autotest-api/build ./build-image.sh ``` ## 📊 测试报告 测试完成后,可以在以下位置查看报告: - **HTML 报告**: `report/index.html` - **邮件报告**: `report/email-report.html` - **JUnit 报告**: `report/junitreports/` - **测试日志**: `logs/easy-autotest.{date}.log` - **错误截图**: `screenshots/` - **视频录制**: `videos/` - **Trace 文件**: `trace/` ## 🔧 开发指南 ### 项目结构规范 ``` src/main/java/ ├── com.laker.autotest.{module}/ │ ├── config/ # 配置类 │ ├── model/ # 数据模型 │ ├── pages/ # 页面对象(WebUI) │ ├── client/ # 客户端(API) │ ├── testcase/ # 测试用例 │ └── utils/ # 工具类 src/main/resources/ ├── application.yml # 应用配置 ├── testng.xml # TestNG 配置 ├── data/ # 测试数据 └── templates/ # 报告模板 ``` ### 编码规范 1. **命名规范**: 使用驼峰命名法,类名首字母大写 2. **注释要求**: 公共方法必须添加 JavaDoc 注释 3. **异常处理**: 使用统一的异常处理机制 4. **日志规范**: 使用 SLF4J + Logback 记录日志 ### 扩展开发 #### 添加新的测试模块 1. 创建新的 Maven 模块 2. 继承父 POM 配置 3. 实现基础测试类 4. 编写测试用例 #### 自定义报告 1. 实现 `IReporter` 接口 2. 创建 FreeMarker 模板 3. 注册报告生成器 ## 🤝 贡献指南 1. Fork 项目 2. 创建特性分支 (`git checkout -b feature/AmazingFeature`) 3. 提交更改 (`git commit -m 'Add some AmazingFeature'`) 4. 推送到分支 (`git push origin feature/AmazingFeature`) 5. 提交 Pull Request --- > 💡 **提示**: 查看各模块的 README.md 文件获取更详细的使用说明 **快速链接**: [WebUI 模块](autotest-webui-testcase/README.md) | [API 模块](autotest-api/README.md) | [桌面模块](autotest-desktop/README.md) | [公共模块](autotest-common/README.md)