Java 接口测试框架 Restassured
目录接口测试框架Restassured介绍市场上的主流的接口测试框架接口测试框架【Restassured】SpringBoot3.X整合快速开始Restassured框架常用方法基础语法格式参数配置示例断言与解析响应断言内置结果解析示例断言测试结果解析接口测试框架Restassured介绍市场上的主流的接口测试框架Postman提供了类似RestAssured的功能包括请求发送、断言和响应处理等。Apache HttpClient一个用于发送HTTP请求的Java库提供了更底层的控制和定制化。JUnit虽然JUnit主要用于单元测试但它可以与RestAssured等库集成用于编写针对API接口的集成测试。MockMvc是Spring框架下的一个模拟框架用于模拟Web请求和响应接口测试框架【Restassured】一个基于Java的轻量级接口测试框架主要用于简化基于HTTP协议的接口测试简单易用、功能强大、可扩展性好官网http://rest-assured.io优点简单易用RestAssured提供了简单易用的API可以轻松地编写测试代码。功能强大支持多种请求方法、断言和验证响应内容、状态码、响应时间等特性可扩展性好RestAssured可以与TestNG、JUnit等测试框架完美集成支持多种数据格式处理RestAssured可以处理JSON和XML格式的数据支持结构化解析和多种解析方式支持xpath/jsonpath/gpath等解析方式对Spring的支持比较全面方便使用Spring框架的开发者缺点依赖性强RestAssured依赖于Java和HTTP协议对于非Java或非HTTP协议的接口可能不太适用需要配置测试环境在使用RestAssured进行接口自动化测试之前需要搭建相应的测试环境包括服务器、数据库等。非0基础上手虽然RestAssured提供了简单易用的API但对于初学者来说仍然需要一定的学习成本才能掌握。SpringBoot3.X整合dependencygroupIdio.rest-assured/groupIdartifactIdrest-assured/artifactId/dependencydependencygroupIdio.rest-assured/groupIdartifactIdrest-assured-all/artifactId/dependencydependencygroupIdio.rest-assured/groupIdartifactIdspring-web-test-client/artifactId/dependency快速开始given设置测试预设包括请求头、请求参数、请求体、cookie等when所要执行的操作配置发起请求的网址GET / POST 请求then解析结果、断言SpringBootTestpublicclassAssuredTest{TestpublicvoidtestBase(){RestAssured.given().param(id,1).when().get(http://127.0.0.1:8082/api/v1/test/detail).then().log().all().statusCode(200);}}Restassured框架常用方法基础语法格式RestAssured的语法采用简洁的链式调用方式以given()开始设置测试预设包括请求头、请求参数、请求体、cookie等然后使用when()指定请求的URLGET、POST等请求最后使用then()进行断言和解析响应结果参数配置请求头参数使用header()方法设置请求头信息例如“header(“Content-Type”, “application/json”)”。请求参数对于GET请求使用“param()”方法设置URL参数例如“param(“key”, “value”)”对于POST请求可以使用“body()”方法设置请求体内容文件上传提供multiPart()的方法可以指定文件(file)、字节数组(byte-array)、输入流或者是上传文件示例GET 请求log()可以向控制台输出返回的信息log().all() 可以返回所有响应中的数据TestpublicvoidtestBase(){RestAssured.given().queryParam(id,1).when().get(http://127.0.0.1:8082/api/v1/test/detail).then().log().all().statusCode(200);}POST方式form表单TestpublicvoidtestPostForm(){RestAssured.given().formParam(mail,1320801376sina.com).formParam(pwd,123456).when().post(http://127.0.0.1:8082/api/v1/test/login_form).then().log().all().statusCode(200);}POST方式jsonheaderTestpublicvoidtestPostJsonHeader(){MapString,StringparamsnewHashMap();params.put(title,山海经传奇);RestAssured.given().header(token,7a9b7dcbba2443c5a80fbfa62da63e69)//.header(Content-Type,application/json).contentType(ContentType.JSON).body(JsonUtil.obj2Json(params)).when().post(http://127.0.0.1:8082/api/v1/test/buy).then().log().all().statusCode(200);文件上传TestpublicvoidtestFile(){RestAssured.given().multiPart(newFile(/Users/xdclass/Desktop/测试jmx/id.csv)).when().post(http://127.0.0.1:8082/api/v1/test/upload).then().log().all().statusCode(200);}断言与解析响应断言使用statusCode()方法指定期望的响应状态码例如statusCode(200)还可以使用body()方法对响应内容进行断言例如body(key, equalTo(value))类型断言方法含义状态码statusCode()响应状态码响应头header()响应头信息内容body()内容匹配内置结果解析自带GPath解析是来自groovy 编程语言的广泛使用的 XML 和 JSON 解析器 GPath可以处理html、xml、json跟JSONpath的区别就是不需要从$开始写了GPATH直接从JSON消息的第一层数据开始通过extract().response()将响应结果保存到Response类型的变量使用Gpath提取响应中的某一个具体的数据提取JSONres.jsonPath().get(“XXX.XXX.XXX”);提取xmlres.xmlPath().get(“XXX.XXX.XXX”);提取HTMLres.htmlPath().get(“XXX.XXX.XXX”);JSON解析支持对JSON格式的响应数据进行解析可以使用jsonPath()方法指定JSON路径进行查询和断言。XML解析支持对XML格式的响应数据进行解析可以使用xmlPath()方法指定XML路径进行查询和断言。示例断言测试TestpublicvoidtestAssert(){MapString,StringparamsnewHashMap();params.put(title,山海经传奇);RestAssured.given().header(token,7a9b7dcbba2443c5a80fbfa62da63e69).header(Content-Type,application/json).body(JsonUtil.obj2Json(params)).when().post(http://127.0.0.1:8082/api/v1/test/buy).then().log().all().statusCode(200).body(code,equalTo(1));}结果解析TestpublicvoidtestResponse(){MapString,StringparamsnewHashMap();params.put(title,山海经传奇);ResponseresponseRestAssured.given().header(token,7a9b7dcbba2443c5a80fbfa62da63e69)//.header(Content-Type,application/json).contentType(ContentType.JSON).body(JsonUtil.obj2Json(params)).log().headers()//打印请求头.log().body()//打印请求体.when().post(http://127.0.0.1:8082/api/v1/test/buy).then().log().all().statusCode(200).extract().response();Objectdataresponse.jsonPath().get(data);System.out.println(data);}

相关新闻

深入理解x86内存寻址:从8086实模式到IA-32段页式映射Linux内核实现

深入理解x86内存寻址:从8086实模式到IA-32段页式映射Linux内核实现

在Linux等现代操作系统中,内存保护模式是实现内存隔离、进程安全运行的核心,而这一切的底层基础,都源于Intel x86系列CPU的寻址机制设计。很多初学者,包括我自己,会被“逻辑地址、线性地址、物理地址”“分段、分页”“…

2026/7/5 8:55:33 阅读更多 →
人机共生·能力重构——AI时代安全工程师培养的新范式与未来路径

人机共生·能力重构——AI时代安全工程师培养的新范式与未来路径

随着生成式AI、大模型、自动化运维等技术的深度渗透,网络空间安全的攻防格局已发生根本性变革:攻击手段呈现“AI化、智能化、规模化”特征,防御体系从“被动响应”向“主动预判、自主防御”升级,传统安全工程师“依赖经验、手动操…

2026/5/17 5:37:38 阅读更多 →
高危预警|CVE-2025-4318 深度剖析:AWS Amplify Studio 远程代码执行漏洞(含完整复现+攻防对抗思路)

高危预警|CVE-2025-4318 深度剖析:AWS Amplify Studio 远程代码执行漏洞(含完整复现+攻防对抗思路)

在云原生开发高速普及的当下,AWS 作为全球领先的云服务提供商,其旗下 Amplify Studio 凭借“可视化拖拽自动代码生成”的核心优势,成为前端开发者快速构建全栈应用的首选工具。然而,CVE-2025-4318 远程代码执行(RCE&am…

2026/7/4 11:09:22 阅读更多 →

最新新闻

3步掌握高效数据迁移:开源格式转换工具的完整实战指南

3步掌握高效数据迁移:开源格式转换工具的完整实战指南

3步掌握高效数据迁移:开源格式转换工具的完整实战指南 【免费下载链接】onenote-md-exporter ConsoleApp to export OneNote notebooks to Markdown formats 项目地址: https://gitcode.com/gh_mirrors/on/onenote-md-exporter 你是否曾面对堆积如山的OneNot…

2026/7/6 5:40:40 阅读更多 →
利用Applera1n工具绕过iPhone激活锁:原理、实操与限制详解

利用Applera1n工具绕过iPhone激活锁:原理、实操与限制详解

1. 项目概述与核心需求解析最近在折腾旧iPhone的朋友,估计没少被“激活锁”这个拦路虎给卡住。手里拿着一台不知道Apple ID密码的二手设备,或者自己忘了密码的老机器,看着那个“激活锁”界面,感觉跟砖头没什么两样。我手头就有一台…

2026/7/6 5:40:40 阅读更多 →
ROFLPlayer:英雄联盟回放分析神器,三步解锁你的游戏复盘能力

ROFLPlayer:英雄联盟回放分析神器,三步解锁你的游戏复盘能力

ROFLPlayer:英雄联盟回放分析神器,三步解锁你的游戏复盘能力 【免费下载链接】ROFL-Player (No longer supported) One stop shop utility for viewing League of Legends replays! 项目地址: https://gitcode.com/gh_mirrors/ro/ROFL-Player 还在…

2026/7/6 5:38:39 阅读更多 →
d2s-editor:暗黑破坏神2存档编辑器,轻松管理你的游戏角色数据

d2s-editor:暗黑破坏神2存档编辑器,轻松管理你的游戏角色数据

d2s-editor:暗黑破坏神2存档编辑器,轻松管理你的游戏角色数据 【免费下载链接】d2s-editor 项目地址: https://gitcode.com/gh_mirrors/d2/d2s-editor 你是否曾为暗黑破坏神2复杂的存档编辑而烦恼?想要调整角色属性却不知从何下手&am…

2026/7/6 5:36:39 阅读更多 →
如何用FanControl打造智能静音电脑:从零基础到专业调校的完整指南

如何用FanControl打造智能静音电脑:从零基础到专业调校的完整指南

如何用FanControl打造智能静音电脑:从零基础到专业调校的完整指南 【免费下载链接】FanControl.Releases This is the release repository for Fan Control, a highly customizable fan controlling software for Windows. 项目地址: https://gitcode.com/GitHub_…

2026/7/6 5:36:39 阅读更多 →
129、轻量化 Head 设计:用 Depthwise Conv 加 1×1 Conv 替代标准检测头卷积

129、轻量化 Head 设计:用 Depthwise Conv 加 1×1 Conv 替代标准检测头卷积

129、轻量化 Head 设计:用 Depthwise Conv 加 1乘1 Conv 替代标准检测头卷积 从一次显存爆炸说起 去年秋天调一个YOLOv11n的工业检测模型,输入分辨率压到640640,batch size设到32,结果RTX 3090直接OOM。排查半天,发现检测头三个分支的卷积层占了将近40%的参数量。当时项目…

2026/7/6 5:32:38 阅读更多 →

日新闻

H2 与 MySQL 单元测试兼容性:5 个关键 SQL 语句差异与规避方案

H2 与 MySQL 单元测试兼容性:5 个关键 SQL 语句差异与规避方案

H2与MySQL单元测试兼容性:5个关键SQL语句差异与规避方案1. 单元测试中的数据库兼容性挑战在Java开发领域,单元测试是保证代码质量的重要环节。当应用涉及数据库操作时,测试环境的搭建往往成为开发者的痛点。H2数据库因其轻量级、内存模式和快…

2026/7/6 0:01:17 阅读更多 →
Windows任务栏终极清理指南:用RBTray一键隐藏窗口到系统托盘

Windows任务栏终极清理指南:用RBTray一键隐藏窗口到系统托盘

Windows任务栏终极清理指南:用RBTray一键隐藏窗口到系统托盘 【免费下载链接】rbtray A fork of RBTray from http://sourceforge.net/p/rbtray/code/. 项目地址: https://gitcode.com/gh_mirrors/rb/rbtray 你是否厌倦了Windows任务栏上密密麻麻的图标&…

2026/7/6 0:01:17 阅读更多 →
Visual C++ 运行时库一键安装终极指南:告别DLL缺失烦恼

Visual C++ 运行时库一键安装终极指南:告别DLL缺失烦恼

Visual C 运行时库一键安装终极指南:告别DLL缺失烦恼 【免费下载链接】vcredist AIO Repack for latest Microsoft Visual C Redistributable Runtimes 项目地址: https://gitcode.com/gh_mirrors/vc/vcredist 你是否曾经遇到过这样的情况:下载了…

2026/7/6 0:05:19 阅读更多 →

周新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/5 0:03:34 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/5 0:03:34 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/5 0:07:38 阅读更多 →

月新闻