# JavaApiAutomation **Repository Path**: zypdominate/java-api-automation ## Basic Information - **Project Name**: JavaApiAutomation - **Description**: 一个基于 Java 的接口自动化测试项目,使用 Maven进行项目管理和构建。 - **Primary Language**: Java - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-05-05 - **Last Updated**: 2025-07-02 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Java 接口自动化测试项目 这是一个基于 Java 的接口自动化测试项目,使用 Maven进行项目管理和构建。 ## 功能特性 - 使用 Rest-Assured 进行接口请求和响应断言 - 使用 TestNG 作为测试执行框架 - 使用 Allure 生成美观的测试报告 - 使用 EasyExcel 进行测试数据的读取和管理 - 使用 Lombok 简化样板代码 - 支持数据驱动测试 ## 技术栈 - **Java 11** - **Maven**: 项目管理和构建工具 - **TestNG**: 测试框架 - **Rest-Assured**: API 测试库 - **Allure**: 测试报告生成工具 - **EasyExcel**: Excel 文件读写库 - **Lombok**: Java 代码简化工具 - **Log4j**: 日志记录 - **JavaFaker**: 测试数据生成 - **MySQL Connector/J & Commons DbUtils**: 数据库操作 ## 快速开始 ### 环境准备 1. 安装 JDK 11 或更高版本 2. 安装 Maven 3. 安装 IntelliJ IDEA 或其他 Java IDE ### 运行测试 1. 克隆项目到本地 2. 使用 IntelliJ IDEA 打开项目,Maven 会自动下载项目依赖 3. 可以通过以下两种方式运行测试: - 在 `testng_ddt.xml` 文件上右键,选择 "Run '...\testng_ddt.xml'" - 在 Maven 工具窗口中,执行 `test` 命令 (`mvn clean test`) ### 查看测试报告 测试执行完毕后,Allure 测试报告会生成在 `target/allure-results` 目录中。 可以通过以下命令启动 Allure 服务查看报告: ```bash mvn io.qameta.allure:allure-maven:serve # mvn allure:serve ``` ## 项目结构 ``` JavaBaseMaven ├── src │ └── test │ ├── java/com/test │ │ └── DDT │ │ ├── base │ │ │ ├── BaseTest.java │ │ │ └── Environment.java │ │ ├── pojo │ │ │ └── CaseData.java │ │ ├── testcase │ │ │ ├── LoginTest.java │ │ │ ├── ModifyPortraitTest.java │ │ │ ├── OrderPayTest.java │ │ │ ├── RechargeTest.java │ │ │ ├── RegisterTest.java │ │ │ └── SearchTest.java │ │ └── util │ │ ├── ExcelUtil.java │ │ ├── JDBCUtil.java │ │ ├── Log4jUtil.java │ │ └── RandomDataUtil.java │ └── resources # 测试相关的资源文件 (例如测试数据,配置文件) ├── pom.xml # Maven 项目配置文件 ├── testng_ddt.xml # 管理运行测试用例 └── README.md # 项目说明文件 ``` ## 使用示例 下面是一个简单的接口测试用例示例,演示了如何使用 Rest-Assured 和 TestNG。 ```java package com.test.DDT; import com.alibaba.excel.EasyExcel; import com.fasterxml.jackson.core.JsonProcessingExceptio import com.fasterxml.jackson.databind.ObjectMapper; import io.restassured.response.Response; import org.testng.annotations.DataProvider; import org.testng.annotations.Test; import java.util.HashMap; import java.util.List; import static io.restassured.RestAssured.given; public class DDTDemo { @DataProvider public Object[] getData() { // 映射实体类 List list = EasyExcel.read("src/test/resources/casedata.xlsx") .head(CaseData.class).sheet("登录模块") .doReadSync(); return list.toArray(); } @Test(dataProvider = "getData") public void test_login_success(CaseData caseData) { System.out.println(caseData); Object body = caseData.getParams(); Response response = given(). header("Content-Type", "application/json; charset=UTF-8"). body(body). when().post("http://mall.lemonban.com:8107/login"). then().log().all().extract().response(); // 通过Jackson解析 ObjectMapper objectMapper = new ObjectMapper(); HashMap map = null; String str = caseData.getExpected().toString(); try { map = objectMapper.readValue(str, HashMap.class); } catch (JsonProcessingException e) { throw new RuntimeException(e); } System.out.println(map); assert map.get("statuscode").equals(response.statusCode()); } } ```