python接口自动化34-json校验神器jsonschema
2021-05-01 04:29
标签:int 正则表达式 结构 ali ocs val eof 格式 user 前面一篇讲到json解析神器jsonpath, jsonpath是为了方便快速取值,如果我们要校验json的字段类型和格式,就不是那边方便了。 先安装 jsonschema 依赖包 pip install jsonschema jsonschema 是基于JSON格式,用于定义 JSON 数据结构以及校验 JSON 数据内容。支持python2.7+和python3+ 也可以支持命令行执行 $ jsonschema -i sample.json sample.schema 完全支持 如下带有token的校验,由于token的值不固定,它是一个40位长度的16进制,0-9和a-f生成的字符串,可以用正则匹配 validate 校验成功时候,不会有报错 python接口自动化34-json校验神器jsonschema 标签:int 正则表达式 结构 ali ocs val eof 格式 user 原文地址:https://www.cnblogs.com/yoyoketang/p/13221771.html前言
比如当接口返回一个token,这个token值不是固定的,就算取到了也不好断言,这时候我们希望断言的是token的类型是字符串,长度是固定多少位。jsonschema
jsonschema 参考文档地址:https://python-jsonschema.readthedocs.io/en/latest/
>>> from jsonschema import validate
>>> # A sample schema, like what we‘d get from json.load()
>>> schema = {
... "type" : "object",
... "properties" : {
... "price" : {"type" : "number"},
... "name" : {"type" : "string"},
... },
... }
>>> # If no exception is raised by validate(), the instance is valid.
>>> validate(instance={"name" : "Eggs", "price" : 34.99}, schema=schema)
>>> validate(
... instance={"name" : "Eggs", "price" : "Invalid"}, schema=schema,
... )
Traceback (most recent call last):
...
ValidationError: ‘Invalid‘ is not of type ‘number‘
Draft 7
, Draft 6
, Draft 4
和 Draft 3
使用示例
from jsonschema import validate
# 需要校验的内容
result = {
"code": 0,
"msg": "login success!",
"token": "000038efc7edc7438d781b0775eeaa009cb64865",
"username": "test"
}
# 编写schema 内容
schema = {
"$schema": "http://json-schema.org/draft-04/schema#",
"title": "test demo",
"description": "validate result information",
"type": "object",
"properties": {
"code": {
"description": "error code",
"type": "integer"
},
"msg": {
"description": "error msg ",
"type": "string"
},
"token":
{
"description": "login success return token",
"maxLength": 40,
"pattern": "^[a-f0-9]{40}$", # 正则校验a-f0-9的16进制,总长度40
"type": "string"
}
},
"required": [
"code", "msg", "token"
]
}
# 校验, 跟assert断言一个意思
validate(instance=result, schema=schema)
schema语法
参数
描述
$schema
表示该JSON Schema文件遵循的规范
title
为该JSON Schema文件提供一个标题
description
关于该JSON Schema文件的描述信息
type
表示待校验元素的类型(例如,最外层的type表示待校验的是一个JSON对象,内层type分别表示待校验的元素类型为,整数,字符串,数字)
properties
定义待校验的JSON对象中,各个key-value对中value的限制条件
required
定义待校验的JSON对象中,必须存在的key
minimum
用于约束取值范围,表示取值范围应该大于或等于minimum
exclusiveMinimum
如果minimum和exclusiveMinimum同时存在,且exclusiveMinimum的值为true,则表示取值范围只能大于minimum
maximum
用于约束取值范围,表示取值范围应该小于或等于maximum
exclusiveMaximum
如果maximum和exclusiveMaximum同时存在,且exclusiveMaximum的值为true,则表示取值范围只能小于maximum
multipleOf
用于约束取值,表示取值必须能够被multipleOf所指定的值整除
maxLength
字符串类型数据的最大长度
minLength
字符串类型数据的最小长度
pattern
使用正则表达式约束字符串类型数据
type取值
type取值
python数据类型
object
dict
array
list
integer
int
number
float或int
null
None
boolean
bool
string
str
文章标题:python接口自动化34-json校验神器jsonschema
文章链接:http://soscw.com/essay/80707.html