Jsonschema测试实践

发布时间:2021-08-05 15:33:10

简介


Json Schema就是用来定义json数据约束的一个标准。根据这个约定模式,交换数据的双方可以理解json数据的要求和约束,也可以据此对数据进行验证,保证数据交换的正确性(通俗来讲:描述或者验证数据格式)。


Jsonschema的特性和用途:


    用于描述数据结构

描述json数据时,如果数据本身的复杂度很高,高到三维四维,普通的标签函数已经无法表示这种层级结构,而Jsonschema利用object和array字段类型的反复嵌套,可以规避掉这个缺陷。


    用于构建人机可读的文档

Jsonschema是自描述的,它本身就是一份很完善的说明文档,字段的说明、格式的要求等清晰明了。


    用于校验数据

通过描述接口入参和出参,进行数据校验,保证两方数据一致。


项目应用


例如:在自动化测试中,校验接口的出参就用到jsonschema,用来校验得到的json字符串的数据类型是否与预期一致,如下为一个jsonschema实例:


schema = {
"$schema": "http://json-schema.org/draft-07/schema#",
"description": "some information about this",
"type": "object",
"required": [
"sdkcorev", "price"
],
"properties": {
"sdkcorev": {
"type": "string",
"minLength": 3,
"maxLength": 30
},
"price": {
"type": "number",
"multipleOf": 0.5, #能够被0.5整除
# 这里没有取等,5.0 "minimum": 5.0,
"maximum": 99999.0,
# 若使用下面这两个关键字则 5.0<=price<=99999.0
# "exclusiveMinimum": 5.0,
# "exclusiveMaximum": 99999.0
},
"tags": {
"type": "array",
"items": [
{
"type": "string",
"minLength": 2,
"maxLength": 8
},
],
"additonalItems": {
"type": "string",
"miniLength": 2
},
"miniItems": 1,
"maxItems": 5,
"uniqueItems": True
},
"coding": {
"type": "string",
"pattern": "^[A-Z]+[a-zA-Z0-9]{12}$"
},
"other": {
"type": "object",
"properties": {
"info1": {
"type": "string"
},
}
}
},
"minProperties": 3, #最小属性个数
"maxProperties": 7, #最大属性个数
}

此实例便对接口返回的json字段进行了详细校验


1. 结构语法:


字段最好不要有’_’下划线分隔


$schema:说明是用了哪一个草案进行校验(可省略)


description:描述信息(可省略)


type:需要校验的对象是一个什么类型,主要有:Object、array、string、integer、number、boolean、enum、null


Object类型主要关键字有:


    properties:定义object的各个字段的属性;required:限定必需字段。additionalProperties:properties不能是其他字段为False,否则为True

array类型主要关键字有:


1. items:每个元素的类型;


2. minItems:最小个数;


3. uniqueitems:每一个元素都不一样(True,False)。


string类型主要关键字有:


1. maxLength定义字符串的最大长度;


2. minLength定义字符串的最小长度;


3. pattern用正则表达式约束字符串。


number类型主要关键字有:


1. minimum(maximum) 最小(大)值;


2. exclusiveMin(ax)imum 如果其值对应为true,则实例大(小)于 min(ax)imum 的值才生效。


integer类型与number类型限制类似,可以描述任意长度,任意小数点的数字。


2. 使用技巧:


若接口中参数较多,并且每一个都需要验证时,需要把每一个的校验都要写上, required后将每一个必须的字段都加上;但是若需要校验的json字段在此schema中只占了部分的话,那么完全可以复用一套schema,只是在此json中不存在的字段在schema中的required后面不用加,如此减少了再次书写schema的工作量。


?


总结


Jsonschema主要用于对数据的约束以及校验,描述已知的数据格式,确保用户提交的数据质量,减少部分手工校验。

相关文档

  • eclipse 查看源代码 Class File Editor source not found
  • codeforces??875A ?? Classroom Watch
  • 光棍节的空间伤感说说
  • 办公室主任年终述职报告_办公室主任的个人年终述职报告范文
  • 上下五千年读后感200字
  • 2020年元旦节祝福语搞笑
  • 结婚证单位证明怎么写
  • Leetcode盛最多水的容器(python3)
  • 宽带能看电视不能上网是怎么回事
  • 直抒己见造句的例子
  • 醉酒后胃难受怎么办解决方法
  • 蟑螂的小常识
  • 古诗及赏析
  • 怎么把数组当参数用ref修饰
  • 正确解释CPU频率、外频、前端总线频率、内存频率
  • <<MYSQL从零开始>>笔记--对<<MYSQL必知必会>>补充
  • 使用springAop实现日志审计
  • 讲话口气很臭是哪里出问题了 讲话口臭吃什么好的快
  • java运行时优化(要点)
  • java的BASE64Encoder,BASE64Decoder加密与解密
  • 小学生游记类作文加评语
  • 冬季肌肤容易出现的问题及补水的偏方
  • 铃兰有什么作用
  • 购买汽油介绍信范文四篇
  • 将可执行jar文件打包成exe文件
  • Unity前期避坑指南
  • 在windows系统下打包linux平台运行的go程序
  • 离婚协议未分割继承引发新纠纷
  • 村上春树经典爱的语录
  • 愚人节的糗事作文
  • 猜你喜欢

  • 沈阳司工业安装工程公司企业信用报告-天眼查
  • AutoCAD 2011及天正建筑8.2应用教程第11章 天正建筑软件概述
  • 2020播音主持自备稿件通用版
  • 海宁市汇隆服饰有限公司企业信用报告-天眼查
  • 农业土壤环境综合评价物元模型的建立及其应用
  • 梦见滑冰
  • 人教版七年级上册数学教案(含反思)--2.2 第3课时 整式的加减1
  • 第3章-面向对象程序设计
  • 四川乐山发生5.0级地震 成绵乐高铁暂时停运
  • 辽宁省大连普兰店市第一中学人教版高中数学必修四导学案:1.2.3同角三角函数基本关系式 Word版
  • 国际货物运输与保险国际贸易支付-文档资料
  • Unity学习Photon 使用Nhiernate接MySQL时 出现The Localhost not support SSL connection
  • 信阳市罗山九里湖生态旅游开发有限公司(企业信用报告)- 天眼查
  • 2019年初级会计职称考试模拟试题及答案:会计实务(章节习题14)
  • 市场营销培训课件PPT(共31页)
  • 高考英语改革对高校英语教学的挑战
  • 毕业留言语录49条
  • 兴趣铸就我的天文梦
  • VS2010下安装boost库
  • 2019年五年级叙事作文-吹泡泡400字
  • 加添加剂水热法简易制备锐钛矿型TiO_2薄膜及其表征
  • 七年级数学上册 第四章 几何图形初步 第9课时 课题学
  • 关于征集南京财经大学科研管理文件修订意见的通知
  • 消防工程基础知识培训课件综述
  • 暑假日记
  • 机遇只光顾有准备的人
  • 句容市天王供销合作社徐家桥村为农服务站企业信息报告-天眼查
  • 素质与能力的培养是音乐教学的重要任务
  • 关节镜下后交叉韧带重建术后的康复护理效果分析
  • 第四章3光纤传感器精品文档
  • 英美文化差异对英美文学评论的影响分析
  • 鞍钢冷轧厂班组安全建设成果.ppt-PPT文档资料
  • 蚌埠浩然建材商贸有限公司企业信用报告-天眼查
  • 深圳市隆美乐贸易有限公司企业信用报告-天眼查
  • 北京创业投资什么公司好
  • 20XX年大学生社会实践心得体会:电子厂打工实践
  • 小学六年级文言文阅读
  • 梦见红色的枕头
  • 2012年药监局工作总结
  • 面向低收入群体市场的创新研究
  • 文秘工作内容有哪些
  • 小学数学教师招聘考试模拟试题及答案
  • 电脑版