接口自动化 - 解决大量响应数据字段的格式断言 -Json-schema

文章目录

✨✨✨学习的道路很枯燥,希望我们能并肩走下来!

编程真是一件很奇妙的东西。你只是浅尝辄止,那么只会觉得枯燥乏味,像对待任务似的应付它。但你如果深入探索,就会发现其中的奇妙,了解许多所不知道的原理。知识的力量让你沉醉,甘愿深陷其中并发现宝藏。



本文开始

1. Json Schema介绍

面对大量响应数据字段断言,不可能逐个断言,面对这种情况,推荐使用Json Schema工具,来辅助;

Json Schema是使用 JSON 格式编写的

  • Json Schema可以用来定义校验 JSON 数据的结构
    Json Schema可以用来校验 JSON 数据的一致性
    Json Schema可以用来校验 API接口请求和响应

Json Schema工具用来定义预期结果,来验证实际响应结果是否正确;

2. 生成Json Schema文档

  • 1.打开工具地址
    JSON Schema 在线生成工具:
    https://app.quicktype.io
  • 2.手动选择语言:选择Json Scnema语言

生成Json Schema文档操作过程:

  1. 复制 JSON 数据:
    从接口响应中获取Json数据
  2. 粘贴到在线生成工具中:
    从响应中获取的Json数据粘贴到在线工具中;
  3. 工具右侧自动生成 JSON Schema数据:
    复制自动生成 JSON Schema数据,配置到代码中即可使用;

json schema生成对应Json文件的校验类型如图:

3. 使用Json Schema 断言

1.导入json-schema-validator依赖:

xml 复制代码
<dependency>
     <groupId>io.rest-assured</groupId>
     <artifactId>json-schema-validator</artifactId>
     <version>4.4.0</version>
     <scope>test</scope>
</dependency>

2.项目路径中创建schema.json文件

2.1 在自动化脚本中创建schema.json文件,用来存储生成的JsonSchema文件

2.2 先通过正常请求方式,获取响应的Json数据 → 再通过工具获取Json Schema文件 → 在复制到自动化项目路径中test/resources/schema.json文件中;(文件名随意)

3.接口测试用例中断言直接使用

then.body(matchesJsonSchemaInClasspath("xxx.json"));

参数为你的schema文件

java 复制代码
   @Test
    void jsonSchemaTest() {
        given()
        .when()
            .get("https://httpbin.com/get")
        .then()
            .log().all()
            .assertThat()
                //Json Schema断言
            .body(matchesJsonSchemaInClasspath("schema.json"));
    }

总结

✨✨✨各位读友,本篇分享到内容是否更好的帮助你理解,如果对你有帮助给个👍赞鼓励一下吧!!
🎉🎉🎉世上没有绝望的处境,只有对处境绝望的人。
🎉🎉🎉一遇挫折就灰心丧气的人,永远是个失败者。而一向努力奋斗,坚韧不拔的人会走向成功。
感谢每一位一起走到这的伙伴,我们可以一起交流进步!!!一起加油吧!!!

相关推荐
碳基沙盒14 小时前
OpenClaw 多 Agent 配置实战指南
运维
蝎子莱莱爱打怪4 天前
Centos7中一键安装K8s集群以及Rancher安装记录
运维·后端·kubernetes
DianSan_ERP4 天前
电商API接口全链路监控:构建坚不可摧的线上运维防线
大数据·运维·网络·人工智能·git·servlet
呉師傅4 天前
火狐浏览器报错配置文件缺失如何解决#操作技巧#
运维·网络·windows·电脑
不是二师兄的八戒4 天前
Linux服务器挂载OSS存储的完整实践指南
linux·运维·服务器
zhangfeng11334 天前
趋动云 如何ssh登录 服务区 项目server
运维·人工智能·ssh
一个人旅程~4 天前
如何用命令行把win10/win11设置为长期暂停更新?
linux·windows·经验分享·电脑
ZeroNews内网穿透4 天前
谷歌封杀OpenClaw背后:本地部署或是出路
运维·服务器·数据库·安全
失重外太空啦4 天前
nginx
运维·nginx
Gofarlic_oms14 天前
避免Kisssoft高级分析模块过度采购的科学评估方法
大数据·linux·运维·人工智能·matlab