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

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整合

<dependency><groupId>io.rest-assured</groupId><artifactId>rest-assured</artifactId></dependency><dependency><groupId>io.rest-assured</groupId><artifactId>rest-assured-all</artifactId></dependency><dependency><groupId>io.rest-assured</groupId><artifactId>spring-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()指定请求的URL(GET、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","1320801376@sina.com").formParam("pwd","123456").when().post("http://127.0.0.1:8082/api/v1/test/login_form").then().log().all().statusCode(200);}
  • POST方式json+header
@TestpublicvoidtestPostJsonHeader(){Map<String,String>params=newHashMap<>();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提取响应中的某一个具体的数据
      • 提取JSON:res.jsonPath().get(“XXX.XXX.XXX”);
      • 提取xml:res.xmlPath().get(“XXX.XXX.XXX”);
      • 提取HTML:res.htmlPath().get(“XXX.XXX.XXX”);
  • JSON解析
    • 支持对JSON格式的响应数据进行解析,可以使用jsonPath()方法指定JSON路径进行查询和断言。
  • XML解析
    • 支持对XML格式的响应数据进行解析,可以使用xmlPath()方法指定XML路径进行查询和断言。

示例

断言测试

@TestpublicvoidtestAssert(){Map<String,String>params=newHashMap<>();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(){Map<String,String>params=newHashMap<>();params.put("title","山海经传奇");Responseresponse=RestAssured.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();Objectdata=response.jsonPath().get("data");System.out.println(data);}
http://www.jsqmd.com/news/394685/

相关文章:

  • 2026+ SRC众测漏洞挖掘实战指南:从入门到高分洞,全覆盖干货秘籍
  • 2026无锡紧固件生产厂家大揭秘,推荐几家靠谱之选,标准件/螺母/五金件/涂胶/非标螺丝/螺栓/螺丝,紧固件厂家价格多少 - 品牌推荐师
  • 人机共生·能力重构——AI时代安全工程师培养的新范式与未来路径
  • 2026年宁波60年树龄高端荒野红茶厂家哪家好?这几家值得关注,高端红茶,60年树龄高端荒野红茶优质厂家排行 - 品牌推荐师
  • Python-0001:import this
  • slope trick优化dp
  • 【AWS】【服务】aws 中的各种服务 ,比如 ECS、S3 、EC2 、 Certicicate Manager、CloudWatch等
  • 揭秘2026年1月评价高的空气幕厂家排行情况,冷却器/新风机组/表冷器/翅片管/干冷器/乏风取热箱,空气幕直销厂家有哪些 - 品牌推荐师
  • 完整教程:Android 15存储子系统深度解析(二):FUSE文件系统与Scoped Storage
  • Linux驱动开发笔记(二十四)——(下)IIO + MPU6050驱动 - 指南
  • 【Solr搜索引擎】-Solr知识点内容很详细
  • 2026年精选:不锈钢黑棒优质厂商TOP推荐,2507不锈钢板/不锈钢冷轧钢带/不锈钢六角棒,不锈钢黑棒现货批发口碑推荐 - 品牌推荐师
  • 直接上结论:9个AI论文工具测评!专科生毕业论文写作必备推荐
  • 新手也能上手!降AI率工具 千笔AI VS 万方智搜AI,专科生专属更高效
  • 用数据说话 9个AI论文工具测评:本科生毕业论文+开题报告全攻略
  • 同样一个点在空间发生变化是(平移、缩放、剪切、旋转),它会发生什么变化
  • 2026年铝行业热鼎盘供应商,精炼用盘新推荐,高密度硅酸钙管托/硬硅酸钙石保温板,铝行业精炼用热鼎盘源头厂家推荐榜单 - 品牌推荐师
  • 并行编程实战——CUDA编程的Enhancing Memory Allocation
  • 生产环境linux 系统移植(第二十八期)---- 运用MfgTool 工具烧写自制的烧写自制的系统系统---- Ubuntu20.04最佳实践与性能优化
  • 毕业论文神器!降AI率软件 千笔AI VS 笔捷Ai,自考党专属
  • 世毫九理论体系总览:从哲学到工程的全链路贯通
  • 专科生收藏!千笔,全网顶尖的AI论文工具
  • 2026年口碑优选:骨灰安葬工作室服务与口碑双佳推荐,告别仪式策划/宠物安葬礼仪/殡葬服务,骨灰安葬工作室排行榜单 - 品牌推荐师
  • 聚焦2026!市面上口碑好的镁球粘合厂家排行揭秘,玉米淀粉/淀粉/食用纯碱/超级生粉/小苏打,粘合剂公司推荐排行榜单 - 品牌推荐师
  • 告别无效堆砌!6款AI论文神器:真实参考文献+AIGC率低至7% - 麟书学长
  • HaiO安装与快速开始
  • YOLO26涨点改进 | 全网独家创新、细节涨点改进篇 | WACV 2025 | 引入SEFN空间增强前馈模块,有效补充了长程依赖建模中的局部空间感知缺陷,助力YOLO26有效涨点
  • 大型工业风扇哪家强?2026口碑厂家来帮忙,工业节能风扇/工业吊扇/工业大吊扇/永磁工业风扇,大型工业风扇品牌排行榜 - 品牌推荐师
  • Haio · 海鸥 - 企业级插件化应用平台
  • 照着用就行:8个AI论文网站深度测评,专科生毕业论文写作全攻略