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

本文介绍了如何使用Python的jsonschema模块进行接口测试中的JSON数据校验。通过安装jsonschema库,定义JSON数据结构的schema,然后使用validate方法进行校验。示例中展示了如何处理token值的正则校验,以及jsonschema中各种参数的含义和用法。
摘要由CSDN通过智能技术生成

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值