当前位置: 首页 > article >正文

Rest-Assured API 测试:基于 Java 和 TestNG 的接口自动化测试

1. 右键点击项目的文件夹,选择 New > File。

2. 输入文件名,例如 notes.md,然后点击 OK。

在这里插入图片描述



3. 选择项目类型

  • 在左侧的 Generators 部分,选择 Maven Archetype,这将为你生成一个基于 Maven 的项目。

4. 配置项目基本信息

  • Name: 在 Name 输入框中填写项目名称(例如 test)。
  • Location: 设置项目的存储路径。这里路径为 F:\java_api\api,可以根据需要更改。
  • Create Git repository: 勾选该选项,将为项目初始化 Git 仓库。

5. 配置 JDK

  • JDK: 在 JDK 下拉框中选择所需的 JDK 版本。这里选择了 Oracle OpenJDK version 1.8.0_211。你也可以选择其他版本,或者点击 Manage catalogs 来管理 JDK。

6. 配置 Maven 构建设置

  • Archetype: 选择 org.apache.maven.archetypes:maven-archetype-quickstart,这是一个常见的 Maven 构建原型。
  • Version: 设置 Maven 构建版本为 1.1,或者可以选择适合的版本。

7. 高级设置

  • GroupId: 设置为 org.example。这通常是你项目的唯一标识符。
  • ArtifactId: 设置为 test,这通常是你的项目名称或模块名称。
  • Version: 设置为 1.0-SNAPSHOT,表示项目的当前版本。

8. 创建项目

配置完成后,点击 Create 按钮,IntelliJ IDEA 将会根据这些设置创建一个新的 Maven 项目。

这些步骤完成后,你的 Maven 项目就已经创建好,接下来可以开始在项目中编写代码和配置依赖了。
在这里插入图片描述





Rest-Assured API 测试笔记

1. 配置步骤

首先,确保你正确添加了 Rest-AssuredTestNG 依赖到你的 pom.xml 文件中:

<dependencies><!-- Rest-Assured 依赖 --><dependency><groupId>io.rest-assured</groupId><artifactId>rest-assured</artifactId><version>4.2.0</version><scope>test</scope></dependency><!-- TestNG 依赖 --><dependency><groupId>org.testng</groupId><artifactId>testng</artifactId><version>7.0.0</version><scope>test</scope></dependency>
</dependencies>
配置步骤
  1. 打开你的 pom.xml 文件。
  2. 找到 <dependencies> 标签。如果没有此标签,请手动添加。
  3. 将以上两段依赖代码添加到 <dependencies> 标签内。
  4. 保存文件后,点击右侧 Maven 工具窗口中的 Refresh 按钮,确保所有依赖被正确下载。

这样,你就完成了 Rest-Assured 和 TestNG 的依赖配置。接下来,你可以开始编写接口测试代码了。


2. 创建 API 测试类

我们创建一个名为 ApiTest.java 的类,来编写不同类型的 API 请求(POST 和 GET)。以下是每个方法的详细解释。


3. test_post_json() 方法

@Test
public void test_post_json() {String jsonData = "{\"principal\":\"lemon_auto\",\"credentials\":\"lemon123456\",\"appType\":3,\"loginType\":0}";given()// 设置请求头,指定请求体的类型为 JSON.header("Content-Type", "application/json; charset=UTF-8")// 设置请求体为 JSON 格式的数据.body(jsonData) .when()// 发送 POST 请求,请求的 URL 为指定的登录接口.post("http://shop.lemonban.com:8107/login").then()// 打印响应的所有信息,包括响应体、状态码、响应头等.log().all();
}
代码逻辑解释
  • @Test: TestNG 的注解,表示这是一个测试方法。

  • given(): 用于设置请求的预处理阶段,在这里你设置了请求头和请求体。

    • header("Content-Type", "application/json; charset=UTF-8"): 设置请求头,告诉服务器请求体是 JSON 格式。
    • body(jsonData): 设置请求体为 JSON 数据,这里包含了用户的登录信息。
  • when().post(): 指定 HTTP 方法(POST)并发送请求。请求的 URL 为 "http://shop.lemonban.com:8107/login"

  • then().log().all(): 打印请求和响应的所有日志信息,以便查看服务器的返回数据。



4. test_post_form() 方法

@Test
public void test_post_form() {given()// 设置请求头,指定请求体的格式为表单数据.header("Content-Type", "application/x-www-form-urlencoded")// 设置表单数据参数.formParam("loginame", "admin").formParam("password", "e10adc3949ba59abbe56e057f20f883e").when()// 发送 POST 请求,请求的 URL 为指定的登录接口.post("http://erp.lemfix.com/user/login").then()// 打印响应日志.log().all();
}
代码逻辑解释
  • formParam(): 用于设置表单参数。在这个方法中,传递了 loginame(用户名)和 password(密码)。这些参数将作为表单数据发送给服务器。
  • header("Content-Type", "application/x-www-form-urlencoded"): 设置请求头,告诉服务器请求体是表单数据格式。
  • 其他逻辑和 test_post_json() 方法类似,最终打印响应日志。


5. test_post_xml() 方法

@Test
public void test_post_xml() {String xmlData = "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n" +"<suite name=\"测试套件\">\n" +"    <test name=\"test\">\n" +"        <classes>\n" +"            <class name=\"com.lemon.testcases.TestLogin\"/>\n" +"            <class name=\"com.lemon.testcases.TestTiku\"/>\n" +"        </classes>\n" +"    </test>\n" +"</suite>";given()// 设置请求头,指定请求体的格式为 XML.header("Content-Type", "application/xml")// 设置请求体为 XML 数据.body(xmlData).when()// 发送 POST 请求,请求的 URL 为指定的接口.post("http://httpbin.org/post").then()// 打印响应日志.log().all();
}

代码逻辑解释
  • body(xmlData): 这里设置了 XML 格式的请求体。xmlData 包含了一个测试套件的 XML 配置。
  • header("Content-Type", "application/xml"): 设置请求头为 XML 格式。
  • 其他步骤与之前的 POST 请求类似,最后打印响应日志。


6. test_post_upload() 方法

@Test
public void test_post_upload() {given().log().all() // 打印请求日志// 设置文件上传.multiPart(new File("F:\\test.txt")).when()// 发送 POST 请求,请求的 URL 为指定的接口.post("http://httpbin.org/post").then()// 打印响应日志.log().all();
}
代码逻辑解释
  • multiPart(): 用于文件上传,multiPart() 方法将文件作为请求的一部分发送给服务器。这里上传了本地文件 F:\\test.txt
  • 其他步骤和之前的 POST 请求相同,打印文件上传的响应日志。


7. test_get() 方法

@Test
public void test_get() {given().log().all() // 打印请求日志// 设置查询参数.queryParam("prodName", "%E9%9E%8B%E5%AD%90").queryParam("sort", 0).queryParam("orderBy", 0).queryParam("current", 1).when()// 发送 GET 请求,请求的 URL 为指定的接口.get("http://mall.lemonban.com:8107/search/searchProdPage").then()// 打印响应日志.log().all();
}
代码逻辑解释
  • queryParam(): 设置 GET 请求的查询参数。这里设置了四个参数:prodNamesortorderBycurrent。这些参数会附加在 URL 后面,作为查询字符串发送。
  • when().get(): 使用 GET 请求从服务器获取数据,URL 为 "http://mall.lemonban.com:8107/search/searchProdPage"
  • 其他步骤和之前的方法相似,最终打印响应日志。


8. 总结

每个方法的核心逻辑是:

  1. 请求的构建(given(): 在 given() 阶段设置请求头、请求体、查询参数等请求配置。
  2. 发送请求(when(): 使用相应的 HTTP 方法(如 post()get())发送请求。
  3. 响应的处理(then(): 打印服务器的响应,或者进行响应的验证。

通过这种方式,我们能够方便地测试不同类型的请求,验证 API 的行为和响应。所有请求类型(JSON、表单、XML、文件上传、GET)都可以通过类似的方式进行设置和测试。



9. 测试执行

你可以通过 IntelliJ IDEA 右键点击每个测试方法并选择 Run 来执行单个测试。所有日志会显示在 Run 控制台中。

http://www.lryc.cn/news/2403838.html

相关文章:

  • 多模型协同:基于 SAM 分割 + YOLO 检测 + ResNet 分类的工业开关状态实时监控方案
  • 【分销系统商城】
  • LangChainGo入门指南:Go语言实现与OpenAI/Qwen模型集成实战
  • 5.1 HarmonyOS NEXT系统级性能调优:内核调度、I/O优化与多线程管理实战
  • react public/index.html文件使用env里面的变量
  • chili3d 笔记17 c++ 编译hlr 带隐藏线工程图
  • 创建一个纯直线组成的字体库
  • 接口不是json的内容能用Jsonpath获取吗,如果不能,我们选用什么方法处理呢?
  • 使用 Docker Compose 从零部署 TeamCity + PostgreSQL(详细新手教程)
  • Go 语言实现高性能 EventBus 事件总线系统(含网络通信、微服务、并发异步实战)
  • Linux进程(中)
  • 【计算机组成原理】计算机硬件的基本组成、详细结构、工作原理
  • npm error Cannot read properties of null (reading ‘matches‘)
  • MVC分层架构模式深入剖析
  • 【方案分享】蓝牙Beacon定位精度优化(包含KF、EKF与UKF卡尔曼滤波算法详解)
  • 新能源汽车热管理核心技术解析:冬季续航提升40%的行业方案
  • LeetCode 239. 滑动窗口最大值(单调队列)
  • 华为云Flexus+DeepSeek征文|DeepSeek-V3/R1开通指南及使用心得
  • 鸿蒙图片缓存(一)
  • 运行示例程序和一些基本操作
  • 学习数字孪生,为你的职业发展开辟新赛道
  • WebRTC源码线程-1
  • python学习打卡day47
  • MySQL中的内置函数
  • Ansible自动化运维全解析:从设计哲学到实战演进
  • YOLOv8n行人检测实战:从数据集准备到模型训练
  • 国标GB28181设备管理软件EasyGBS远程视频监控方案助力高效安全运营
  • 网络寻路--图论
  • LangChain4j 学习教程项目
  • 【Go语言基础【15】】数组:固定长度的连续存储结构