数据有效性自动添加一段字符串_通过JSONSchema完成接口自动化测试的数据验证...

faac600f246990c2b6a5633b88fdced7.png

JSON Schema,也称为JSON模式。

JSON Schema是描述你的JSON数据格式;JSON模式(应用程序/模式+ JSON)有多种用途,其中之一就是实例验证。

验证过程可以是交互式或非交互式的。

例如,应用程序可以使用JSON模式来构建用户界面使互动的内容生成除了用户输入检查或验证各种来源获取的数据。

一般使用JSON Schema来进行JSON数据格式验证,在数据提交到业务层次之前进行JSON格式的验证。

JSON Schema官网的描述摘要:http://json-schema.org/

a4a364854a4b9a5c5b88463fb8f0f85f.png
JSON Schema是基于JSON格式定义JSON数据结构的规范 用于描述现有的数据格式(JSON数据) 清晰的人机可读文档:定义的JSON Schema具有人类和机器都可读的特性 使用JSON Schema可完成完整的JSON结构和数据验证 可用于自动化测试和确保客户提交的数据质量(如下我们只讨论在自动化测试中的应用)

下面是一段JSON示例,文档中包含如下信息:

一个老师的唯一标识符:teacherId

一个老师的名称:teacherName

老师的年龄:age

老师的标签:tags

8714342af1986d44aa2fb66cf12c6693.png

f004733467649b810802d55dcd8db096.png

例子很简单,但是中间有些问题有待解决,这也是我们在自动化测试中可能会关注的信息,比如以下这些:

teacherId是什么? teacherName是必需的吗? 龄字段age可以为0吗? 所有的标签都是字符串类型的值吗?

如果在自动化测试中需要来验证上述问题,方法一可以通过提取数据的方式完成。

参考之前的文章:

使用 JsonPath完成接口自动化测试中参数关联和数据验证

使用JsonPath更适合关键信息的提取和验证,JSON Schema更适合回答上面的这些问题。

92c61879a0b1491aa50ff22c71b08224.png

首先我们从如下一些关键字开始:

$schema:该关键字声明该模式是根据标准的特定草案编写的,主要用于版本控制,可省略

$id:该关键字定义模式的URI,可省略

title和description:该JSON Schema的注释和描述信息,不会向验证的数据调节约束

type:该关键字会定义JSON数据的第一个约束,比如是JSON对象还是数组

针对上述JSON 案例初步编写的JSON Schema如下:

b1ff0d4b1b3f899b0aacaf722e718b2b.png

732687c6f7d26a30ca9ec0b39a546f87.png

01 teacherId属性

teacherId是老师的唯一标识符,是不可缺少的

teacherId类型是整型

根据约束我们在上面JSON Schema更新如下:

添加一个属性验证的关键字(key):properties

添加一个teacherId的key,描述和约束如下:

description:描述这个属性

type:属性类型

添加一个required关键字(key),在列表中加入teacherId,表示teacherId是必需的

最后的JSON Schema如下:

0d84344bab27c25f8dd630c8bb5b1404.png

57a6ff778e36c8f8e19d462d6ffd9c8f.png

c81d212fb23334605f26ba6a122e758e.png

fdfcee4bf5a83cf2b2a7ca4082bed48a.png

739c42e1c240bb02233f282900f5160a.png

04 tags属性

tags属性要求如下: 老师标签不是必需的 如果有tags,那么至少要有一个标签 所有的标签必需要是唯一的,一个老师的标签不能重复 所有的标签必须要是文本

JSON Schema需要做如下修改:

在properties中添加一个tags属性 tags的类型设置为array 引入items的约束关键字定义数组中的元素,如下约束类型为string 引入minItems关键字用于约束数组中最少元素数量 引入uniqueItems关键字用于约束数组所有元素值是唯一的 因为tags可选的,所有在required中我们没有添加该属性

升级后JSON Schema如下:

9784d13a3c55b8338b4c797c0addcfec.png

2ec64ecb6e04ed1656fc4bbfb0b8299b.png

通过maven引入相关的jar包

f614da056ec78f1d7f8260e5037f5387.png

编写程序校验

5f6254b55c2e50e2ec7b24ff8d2e7f69.png

c78ce5829d9855fa86bd6a49f988f877.png

输出结果如下

86a439a192dc1025725997559b3032fe.png

67ea87479ba97e7f8954060171363414.png

a3ae1c244fdae5edcf4bfe2902594f8f.png

校验结果为:

d2c6f84033cf4181d4d827de9bfd54bb.png

68e6ef1e31beaee9d5a85e17b73ca222.png

校验结果false,表述失败。

处理报告中对校验不通过的地方也有原因描述,

至此,大家可以在自己的自动化测试框架应用上JSON Schema。

对响应结果为JSON格式的数据进行完整的结构和数据校验,

更多关于JSON Schema的知识可参考:

http:

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

github:

java-json-tools/json-schema-validator

本文转载自柠檬班社区,未经允许谢绝转载

http://www.lemfix.com/topics/75

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值