python 接口测试怎么校验json数据_Python-接口自动化json数据校验模块jsonschema

jsonschema

先安装 jsonschema 依赖包

pip install jsonschema

jsonschema 用于定义 JSON 数据结构以及校验 JSON 数据内容。支持python2.7以上+jsonschema

参考文档地址:https://python-jsonschema.readthedocs.io/en/latest/

完全支持 Draft 7, Draft 6, Draft 4 和 Draft 3

项目实战

如下带有token的校验,由于token的值不固定,它是一个30位长度的16进制,0-9和a-f生成的字符串,可以用正则匹配

from jsonschema import validate

# 需要校验的内容

result = {

"code": 0,

"msg": "login success!",

"token": "000038efc7edc7438d781b0775eeaa009cb64865",

"username": "test"

}

# 编写schema 内容

#下面是给json定义一个规范,也就是json中每个key的value值的数据类型,长度或使用正则校验起始或结尾的字符等

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": 30,#长度

"pattern": "^[a-f0-9]{40}$", # 正则校验a-f0-9的16进制,总长度40

"type": "string"#类型

}

},

"required": [

"code", "msg", "token"

]

}

assert(instance=result, schema=schema)#result要校验的数据,schema规范

validate 校验成功时候,不会有报错

JSON 数据校验失败,抛出 jsonschema.exceptions.ValidationError 异常

schema 模式本身有问题,抛出 jsonschema.exceptions.SchemaError 异常

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


版权声明:本文为weixin_29029673原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。