1. 概念
校验接口返回响应结果的全部字段(更进一步的断言)
校验内容:
1)字段值
2)字段名或字段类型
校验流程:
1)定义json语法校验格式
2)比对接口实际响应数据是否符合json校验格式
2. 安装jsonschema
pip install jsonschema -i https://pypi.douban.com/simple/
{
"type":"object",
"properties":{
"success":{"type":"boolean"},
"code":{"type":"integer"},
"message":{"type":"string"}
},
"required":["success","code","message"]
}
在线校验工具:
3. python代码校验
1)导包 import jsonschema
2) 定义 jsonschema 格式数据校验规则
3)调用 jsonschema.validate(instance="json数据",schema="jsonschema规则")
查验校验结果:
通过:返回None
失败: schema规则错误,返回SchemaError; json数据错误,返回ValidationError
# 1.导包
import jsonschema
# 2.1 创建校验规则
schema ={
"type":"object",
"properties":{
"success":{"type":"boolean"},
"code":{"type":"integer"},
"message":{"type":"string"}
},
"required":["success","code","message"]
}
# 2.2 准备待校验的数据
data = {
"success":True,
"code":10000,
"message":"操作成功"
}
# 3. 调用 validate 方法,实现校验
result = jsonschema.validate(instance=data,schema=schema)
print(result)
4. json schema 语法
1)type关键字
作用: 判断数据的类型
- integer-整数
- string-字符串
- object-对象
- array -数组
- number -整数/小数
- null -空值
- boolean -布尔值
语法:
{
"type":"数据类型"
}
2)properties 关键字
是type关键字的辅助,用于type值为object的场景
作用:指定对象中每个字段的校验规则,可以嵌套使用。
语法:
{
"type":"object",
"properties":{
"字段1":{规则},
"字段2":{规则},
...
}
}
3) required 关键字
作用:校验对象中必须存在的字段。字段名必须是字符串,且唯一
语法:
{
"required":["字段名1","字段2",...]
}
4) const关键字
作用:校验字段值是一个固定值
语法:
{
"字段名":{"const":具体值}
}
5) pattern 关键字
作用:对字符串进行模糊匹配
基础正则举例:
- 包含字符串: hello
- 以字符串开头: ^hello
- 以字符串结尾: world$
- 匹配[]内任意一个字符: [0-9] 或者 [a-z] 或者[d4fsdf]
- 匹配指定的次数: [0-9]{11} 匹配11位数字
import jsonschema
data = {
"message":"eee444操作成功",
"mobile":"12812345678"
}
schema = {
"type":"object",
"properties":{
"message":{"pattern":"操作成功"},
"mobile":{"pattern":"^[0-9]{11}$"}
}
}
res = jsonschema.validate(instance=data,schema=schema)
print(res)