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

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.xdnf.cn/news/920503.html

相关文章:

  • 8.库制作与原理
  • JS的 DOM 尺寸与位置属性
  • Faiss向量数据库全面解析:从原理到实战
  • Bootstrap Blazor中实现富文本框Editor组件的内容导出为docx格式的Word文档
  • 模式选择器中 编辑一些操作 和文件菜单一些操作
  • 本地主机部署开源企业云盘Seafile并实现外部访问
  • 二进制与十进制转换指南:深入理解数字系统转换
  • 【赵渝强老师】使用obd快速体验OceanBase
  • 分享两个日常办公软件:uTools、PixPin
  • C#报价系统陈列展示成本核算系统项目管理系统纸品非纸品报价软件
  • WebRTC通话原理与入门难度实战指南
  • C++--list的使用及其模拟实现
  • 【Python训练营打卡】day46 @浙大疏锦行
  • PCA笔记
  • rl_sar实现sim2real的整体思路
  • [文献阅读] Emo-VITS - An Emotion Speech Synthesis Method Based on VITS
  • Java优化:双重for循环
  • 浅谈 React Suspense
  • Java高级 | 【实验七】Springboot 过滤器和拦截器
  • 【深度学习-Day 24】过拟合与欠拟合:深入解析模型泛化能力的核心挑战
  • PG 分区表的缺陷
  • Python网页自动化测试,DrissonPage库入门说明文档
  • Redis故障转移
  • 两种Https正向代理的实现原理
  • 文本切块技术(Splitter)
  • 运行示例程序和一些基本操作
  • 解决MySQL8.4报错ERROR 1524 (HY000): Plugin ‘mysql_native_password‘ is not loaded
  • Puppeteer API
  • Redis:现代应用开发的高效内存数据存储利器
  • springCloud2025+springBoot3.5.0+Nacos集成redis从nacos拉配置起服务