接口自动化 - 解决大量响应数据字段的格式断言 -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"));
    }

总结

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

相关推荐
释怀不想释怀17 小时前
Linux(复习常见命令)
linux·运维·服务器
_F_y17 小时前
负载均衡在线oj(文件版)
linux·运维·负载均衡
Chase_______17 小时前
【Linux指南】:vi编辑器
linux·运维·编辑器
FreeBuf_17 小时前
攻击者操纵大语言模型实现漏洞利用自动化
人工智能·语言模型·自动化
Dxy123931021617 小时前
Nginx中的worker_processes如何设置:从“盲目填数”到“精准调优”
运维·nginx
礼拜天没时间.17 小时前
【生产级实战】Linux 集群时间同步详解(NTP + Cron,超详细)
linux·运维·服务器·时间同步·cron·ntp
艾莉丝努力练剑17 小时前
【Linux进程控制(一)】进程创建是呼吸,进程终止是死亡,进程等待是重生:进程控制三部曲
android·java·linux·运维·服务器·人工智能·安全
NEAI_N17 小时前
嵌入式 Linux 中 system() 返回值的正确判定
linux·运维·服务器
瀚高PG实验室17 小时前
无法连接到服务器:连接被拒绝
运维·服务器·瀚高数据库