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

总结

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

相关推荐
ManageEngineITSM17 小时前
IT服务台为什么越忙越低效?
人工智能·自动化·excel·itsm·工单系统
safestar201217 小时前
ES批量写入性能调优:BulkProcessor 参数详解与实战案例
java·大数据·运维·jenkins
Tangcan-17 小时前
博客系统测试报告
功能测试·测试工具·postman
来一颗砂糖橘17 小时前
负载均衡的多维深度解析
运维·负载均衡
楠奕17 小时前
CentOS7安装GoldenDB单机搭建及常见报错解决方案
linux·运维·服务器
GCTTTTTT18 小时前
远程服务器走本地代理
运维·服务器
W.W.H.18 小时前
常见面试题——中断是如何产生的
经验分享·nvic·嵌套向量中断控制器
剑锋所指,所向披靡!18 小时前
Linux常用指令(2)
linux·运维·服务器
恒拓高科WorkPlus18 小时前
简单聊天、传文件,为何推荐BeeWorks私有化IM? - BeeWorks
经验分享
飞Link18 小时前
逆向兼容的桥梁:3to2 自动化降级工具实现全解析
运维·开发语言·python·自动化