接口测试笔记

10、RestAssured接口测试

Rest和Restful基础知识

REST-Representation State Transfer

  • 一种软件架构风格,可以降低开发的复杂性,提高系统的可伸缩性。

REST or RESTFUL 区别:

  • RESTFUL 是REST的形容词形式
  • RESTFUL API指的是REST风格的接口
  • 一般来说REST等于RESTFUL ,区别是一个是名词一个是形容词

REST API

  • 出现:REST 是由Roy Fielding博士在2000年他的博士论文中提出来的
  • 定义:简单来说REST 是一种系统架构设计风格(而非标准),一种分布式系统的应用层解决方案
  • 目的:Client和Server进一步解耦
  • 应用:最为经典的莫过于github API

REST 支持的方法

|-----------------------------------|----------------------------------------|
| Verd | 描述 |
| HEAD Select | 获取某个资源的头部信息 |
| GET Select | 获取资源 |
| POST Create | 创建资源 |
| PATCH Update | 更新资源的部分属性(很少用,一般用 POST 替代) |
| PUT Update | 更新资源,客户端需要提高新建资源的所有属性 |
| DELETE Delete | 删除资源 |

REST API接口规范

设计规范

  • 协议:建议使用HTTPS协议,确保交互数据的传输安全。
  • 域名:应该尽量将API部署在专用域名之下。https://api.example.com
  • 版本控制:将版本号放在URL或者Header中

返回结果设计

  • 通用错误码。具体产品由具体产品api文档给出

{
"message":"success",
"code":200
}

REST API实例
  • GET /product:列出商品
  • POST /product/add:新建一个商品
  • GET /product/ID:获取某个指定商品的信息
  • PUT /product/ID:更新某个指定商品的信息
  • DELETE /product/ID:删除某个商品
  • GET /product/ID/purchase:获取某个指定商品的所有

Rest-Assured框架

  • Rest-Assured 是一套由 Java 实现的 REST API 测试框架,它是一个轻量级的 REST API 客户端,可以直接编写代码向服务器端发起 HTTP 请求,并验证返回结果。
  • https://rest-assured.io/

Rest-Assured请求处理-Get

import static io.restassured.RestAssured.*;

Rest-Assured请求处理-Post

  • 总结:如果请求Content-Type类型是:application/x-www-form-urlencoded,可以直接用params()或者body()管理,但是如果是application/json 则只能用body()管理参数

设置header,cookie

获取具体的某个cookies:

  • response.getCookie("cookiesName");

获取所有的cookies,返回一个map:

  • Map cookies = response1.getCookies();

获取Response 状态码

获取Response 状态码,返回int类型

  • response.getStatusCode();

获取Response body

  • response.getBody().asString()

获取指定header

  • Headers headers = response.getHeaders(); headers.hasHeaderWithName("XXX")

解析JSON

Rest-Assured响应校验

Hamcrest是用于Java的单元测试的框架,使用matcher匹配器来进行断言

import static org.hamcrest.CoreMatchers.*;

  • 尽管Rest Assured 提供了校验方法,但是在实际API自动化测试过程中,因为往往需要校验的字段非常多,建议还是直接先把要校验的JSON字段解析出来,再通过TestNG提供的Assert类进行校验

Https协议

Response response = given().config((RestAssured.config().

sslConfig(new SSLConfig().relaxedHTTPSValidation())))

相关推荐
一个人旅程~3 分钟前
Win旧版或win10部分版本如何解除260字符长路径名限制?
linux·windows·经验分享·电脑
iEdHu7 分钟前
LinuxDO | L站 | Linux.do邀请码2026最新获取方式【邀请链接每日分享】
linux·经验分享·其他·社交电子
阿哟阿哟7 分钟前
立创3D模型快速下载
笔记·单片机·嵌入式硬件
shehuiyuelaiyuehao7 分钟前
关于md格式
笔记
wxl78122732 分钟前
Hermes+Qwen3.6-35B本地离线全链路全自动开发React项目,完成cognee-ui从零开发+自动测试+自动修Bug闭环
人工智能·经验分享·自我提升·hermes agent
阿Y加油吧1 小时前
二刷 LeetCode:300. 最长递增子序列 & 152. 乘积最大子数组 复盘笔记
笔记·算法·leetcode
我不是懒洋洋1 小时前
【数据结构】二叉树OJ(单值二叉树、检查两棵树是否相同、对称二叉树、二叉树的前序遍历、另一颗树的子树)
c语言·数据结构·c++·经验分享·算法·leetcode·visual studio
阿Y加油吧1 小时前
二刷 LeetCode:5. 最长回文子串 & 1143. 最长公共子序列 复盘笔记
笔记·算法·leetcode
字节跳动的猫1 小时前
LikeShop 全系列产品名录:一套覆盖电商与本地生活的系统矩阵
经验分享
三品吉他手会点灯10 小时前
C语言学习笔记 - 20.C编程预备计算机专业知识 - 变量为什么必须的初始化【重点】
c语言·笔记·学习