给你一把接口响应断言神器,你要不要?

JSON Schema是用来标记和校验JSON数据,类似于XMLSchema,可用在自动化测试验证JSON数据。

官网:http://json-schema.org/

最常用版本:draft 04。(目前各类编程语言对draft 04支持最广泛)

举个例子

假如你有一个接口响应数据,返回了用户信息注册相关的信息,内容如下:

图片

在上面的例子中,注册接口要求提供code,msg,copyright,data4个成员,其中code是数值,msg、copyright是字符串,data是一个对象,data又包含了id、reg_name、mobile_phone3个成员。

如果想对code=0和msg=OK进行断言,可以使用JSON Schema来规范,对应的JSON Schema如下:

图片

语法规则

既然JSON Schema是用来标记和校验JSON数据,那么咱们首先介绍下json中的数据类型,如下:

图片

通过上述6种类型自由组合可以构建更复杂的JSON结构,比如上面的用户注册响应结果。JSON Schema会针对这6种数据类型进行各种各样的约束。JSON Schema本身也是一种JSON数据,也要遵循JSON格式。

01 最外层字段

图片

type可选值:

图片

例子:

图片

符合要求的JSON:

图片

array常用属性:

图片

例子:

图片

符合要求的JSON:

图片

number常用属性:

图片

例子:

图片

符合要求的JSON:

图片

在number中没有等于的约束,那怎么解决呢?答案:minimum和maximum同一个值就行了比如说5,因为minimum>=5加上maximum<=5的取值范围只有5。

string常用属性:

图片

例子:

图片

符合要求的JSON:

图片

在string中没有等于的约束,怎么解决呢?两种方式,第一种是用正则表达式,但是不在这里展开讲,有兴趣的小伙伴可以看我另一篇文章。第二种是用枚举enum。

枚举enum:

图片

符合要求的JSON:

  • "a"或者"b"或者"c"其中一个,如果想实现字符串等于某个值,写成这样:"enum": ["a"],目前枚举只支持string类型。

  • "a"或者"b"或者"c"其中一个,如果想实现字符串等于某个值,写成这样:"enum": ["a"],目前枚举只支持string类型。

  • "a"或者"b"或者"c"其中一个,如果想实现字符串等于某个值,写成这样:"enum": ["a"],目前枚举只支持string类型。

内部引用definitions和$ref :

definitions用来定义公共约束,注意definitions只是定义约束如果没有引用则约束不生效。$ref用来引用definitions中定义的约束。

例子:

图片

上述jsonschema描述:必须是Object类型,并且有mobilephone_1和mobilephone_2属性,属性的约束来自definitions#mobilephone。

符合要求的JSON:

图片

02 聚合关键字allOf、anyOf、oneOf、not
  • allOf 必须满足所有的约束才算通过

例子:

图片

符合要求的JSON:

图片

  • anyOf 必须满足任意一个或多个约束才算通过

例子

图片

符合要求的JSON:

图片

  • oneOf 必须满足任意一个约束才算通过

例子:

图片

符合要求的JSON:

图片

  • not 不是给出的约束即可

例子:

图片

符合要求的JSON:

图片

 

总结:

感谢每一个认真阅读我文章的人!!!

作为一位过来人也是希望大家少走一些弯路,如果你不想再体验一次学习时找不到资料,没人解答问题,坚持几天便放弃的感受的话,在这里我给大家分享一些自动化测试的学习资源,希望能给你前进的路上带来帮助。

软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

 

          视频文档获取方式:
这份文档和视频资料,对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!以上均可以分享,点下方小卡片即可自行领取。

  • 7
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值