当前位置: 首页 > 后端技术 > Python

全场验证

时间:2023-03-25 23:32:38 Python

1、全场验证的概念。验证接口返回响应结果的所有字段。应用场景为普通断言。对于无法判断的字段,通过全字段校验*字段值*字段名或字段值1的Type校验过程补充校验内容。定义校验规则(json语法)2.比较响应数据是否符合校验规则安装jsonschemapipinstalljsonschema2.校验方式2.1工具校验https://www.jsonschemavalidator。网络验证规则待验证数据验证结果2.2代码验证#1。导入包导入jsonschema#2。待验证数据data={"success":true,"code":10000,"message":"操作成功"}#3.验证规则schema={"type":"object","properties":{"success":{"type":"boolean"},"code":{"type":"integer"},"message":{“类型”:“字符串”}},“必需”:[“成功”,“代码”,“消息”]}#4。validatedataprint(jsonschema.validate(instance=data,schema=schema))checkcheckresultcheckpassed:returnNonecheckfailedschema规则错误,返回SchemaErrorjson数据错误,返回ValidationError3,jsonschema语法关键字1:typefunction:constraint数据类型语法:{"type":"number根据类型"}"""整数-整数字符串-字符串对象-对象数组-数组-对应python列表数-整型/小数null-空值-对应pythonNoneboolean-布尔值-对应true/false"""关键字2:properties说明:type关键字的辅助,用于type取值为object的场景。作用:指定object中各个字段的校验规则,可以嵌套使用。语法:{"type":"object","properties":{"字段名1":{rule},"字段名2":{rule},......}}case#准备数据data={"success":True,"code":10000,"message":"操作成功","money":6.66,"address":None,"data":{"name":"tom","age":18},"luckyNumber":[6,8,9]}关键字3:required作用:检查对象中必须存在的字段,字段名必须是字符串,唯一的语法是:{"required":["fieldname1","Fieldname2",...]}关键字4:const功能:验证字段值是一个固定值。相当于断言中的==用法语法:{"字段名":{"const":具体值}}关键字五:pattern作用:指定一个正则表达式,模糊匹配字符串上的正则表达式,使用或不使用符号,排列组合,从大量的字符串数据中,根据指定条件过滤数据"""基本正则化示例:1包含字符串:hello类似于in2中的断言以字符串开头^:^hello如:hello,world3以字符串结尾$:hello$例如:helloChina,4匹配[]中任意1个字符[]:[0-9]匹配任意数字[a-z]匹配任意小写字母[cjfew9823]匹配任意5匹配指定次数{}:[0-9]{6}匹配6位数字。"""case#importpackageimportjsonschema#验证数据data={"success":False,"code":10000,"message":"xxx登录成功","data":{"age":20,"name":"lily"}}#验证规则schema={"type":"object","properties":{"success":{"type":"boolean",},"code":{"type":“整数”},“消息”:{“模式”:“登录成功$”},“数据”:{“类型”:“对象”,“属性”:{“年龄”:{“常量”:20},"name":{"const":"lily"}},"请购单red":["age","name"]}},"required":["success","code","message","data"]}#校试print(jsonschema.validate(instance=data,模式=模式))