全量字段校验

一、 全量字段校验

  1. 概念
    校验接?返回响应结果的全部字段

  2. 应用场景
    普通断言,无法判断的 字段,通过全量字段校验弥补

  3. 校验内容
    * 字段值 * 字段名 或 字段值的类型

  4. 校验流程
    1.定义 校验规则(json语法) 2.?对 响应数据 是否 符合 校验规则

  5. 安装jsonschema
    pip install jsonschema

二、 校验方式
2.1 工具校验
https://www.jsonschemavalidator.net

校验规则
全量字段校验
文章图片

待校验数据
全量字段校验
文章图片

校验结果
全量字段校验
文章图片

2.2 代码校验
#1.导包 import jsonschema #2.待校验数据 data =https://www.it610.com/article/{"success": true, "code": 10000, "message": "操作成功" } #3.校验规则 schema = { "type": "object", "properties": { "success": { "type": "boolean" }, "code": { "type": "integer" }, "message": { "type": "string" } }, "required": [ "success", "code", "message" ] }#4.校验数据 print(jsonschema.validate(instance=data, schema=schema))

查验校验结果
  • 校验通过:返回 None
  • 【全量字段校验】校验失败
    • schema 规则错误,返回 SchemaError
    • json 数据错误,返回 ValidationError
三、jsonschema语法
关键字一:type
作用:约束数据类型
语法:{"type": "数据类型"}
""" integer —— 整数 string —— 字符串 object —— 对象 array —— 数组- 对应 python 列表 number —— 整数/?数 null —— 空值- 对应 python None boolean —— 布尔值- 对应 true / false """

关键字二:properties
说明:是 type关键字的辅助。用于 type 的值为 object 的场景。
作用:指定 对象中 每个字段的校验规则。 可以嵌套使用。
语法: { "type": "object", "properties": { "字段名1":{规则}, "字段名2":{规则}, ...... } }

案例
# 准备数据 data = https://www.it610.com/article/{"success": True, "code": 10000, "message": "操作成功", "money": 6.66, "address": None, "data": { "name": "tom", "age": 18 }, "luckyNumber": [6, 8, 9] }

全量字段校验
文章图片

关键字三:required
作用:校验对象中必须存在的字段。字段名必须是字符串,且唯?
语法: { "required": ["字段名1", "字段名2", ...] }

关键字四:const
作用:校验字段值是?个固定值。等价于 断言中 == 用法
语法: { "字段名":{"const": 具体值} }

关键字五:pattern
作用:指定正则表达式,对字符串进行模糊匹配
正则表达式,用不常用的符号,排列组合,从大量 字符串 数据中, 按指定条件 筛选 数据

""" 基础正则举例: 1 包含字符串:hello类似于 断言中的 in 2 以字符串开头 ^: ^hello如:hello,world 3 以字符串结尾 $: hello$如:hello中国, 4 匹配[]内任意1个字符[]: [0-9]匹配任意?个数字 [a-z]匹任意一个小写字母[cjfew9823]匹配任意一个 5 匹配指定次数{}: [0-9]{6}匹配6位数字。 """

案例
# 导包 import jsonschema# 校验数据 data = https://www.it610.com/article/{"success": False, "code": 10000, "message": "xxx登录成功", "data": { "age": 20, "name": "lily" } }# 校验规则 schema = { "type": "object", "properties": { "success": { "type": "boolean", }, "code": { "type": "integer" }, "message": { "pattern": "登录成功$" }, "data": { "type": "object", "properties": { "age": { "const": 20 }, "name": { "const": "lily" } }, "required": ["age", "name"] } }, "required": ["success", "code", "message", "data"] }# 校验 print(jsonschema.validate(instance=data, schema=schema))

    推荐阅读