前言
笔者测试过程中,接到这样一个测试任务,接口进行重构之后,需要测试同学来验证数据的结构和类型,以防因某个字段被删除或者类型被更改,造成隐藏问题出现的概率增加。那该如何验证数据结构和类型呢?带着这个问题,我们一起探索。
JSON Schema
前言中提到的问题,就需要使用JSON Schema
来解决。那到底什么是JSON Schema
,又该如何使用呢?
什么是JSON Schema
JSON Schema 是一种用于验证和描述 JSON 数据结构的语言。它提供了一种标准化的规范方法,可以定义 JSON 数据的结构、数据类型以及相关约束条件。
JSON Schema
的基本语法
JSON Schema 使用 JSON 对象来表示数据结构和约束规则。以下是一些常见的 JSON Schema 关键字:
$schema
:指定所使用的 JSON Schema 规范版本。type
:指定数据的类型,如字符串、数字、布尔值等。properties
:定义对象属性及其对应的约束规则。required
:指定必需的属性。enum
:定义枚举值列表。pattern
:使用正则表达式验证字符串格式。minimum
和maximum
:定义数值的最小值和最大值。format
:定义特定的数据格式,如日期、时间等。
演示案例
我们看这个示例,演示如何使用 JSON Schema 验证用户提交的表单数据:
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"name": {
"type": "string"
},
"email": {
"type": "string",
},
"age": {
"type": "integer",
"minimum": 18
}
},
"required": ["name", "email"]
}
在上述示例中,我们定义了一个包含 name
、email
和 age
属性的对象,并指定了它们的类型和必需性。
我们来测试一下:
from jsonschema import validate
x = {
"name": "aomaker",
"age": 2,
"email": "111"
}
schema = {
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"name": {
"type": "string"
},
"email": {
"type": "string",
"for