REST Assured 系列汇总 之 REST Assured 54 - What Is JSON Schema?
JSON Schema
说到车,你会想象它的结构组成。例如:一辆车有4个轮子,一个车体,油缸,方向盘,座位等。这些组成任何车的基本结构。如果一个物体只有3个轮子,其它部分都满足前面我们说的基本结构,也不能称作是我们定义的这种结构的车。
当创建一个 Gmail 账号时,并非所有字段信息都是必须的。但是如果不填写某些必要信息,将会得到错误,账号不能创建成功。相似地,一个用来存储键值对数据的 JSON 也有结构,定义其允许的格式和字段,值等。这种结构就称为一个 JSON Schema。
一个 JSON Schema 是一个 JSON 文档,用来验证一个 JSON 对象的语法和语义。语法是验证一个 JSON 对象是否是一个有效的 JSON 对象。语义是验证一个有效的 JSON 对象是否包含所有必要的字段,值的格式,允许的值等。
根据 JSON Schema 官网定义,JSON Schema 就是一个词汇表,用来注释和验证 JSON 文档。
JSON Schema 例子:
{
"$schema": "http://json-schema.org/draft-07/schema",
"$id": "http://example.com/example.json",
"type": "object",
"title": "The root schema",
"description": "The root schema comprises the entire JSON document.",
"default": {},
"examples": [
{
"token": "abc123"
}
],
"required": [
"token"
],
"properties": {
"token": {
"$id": "#/properties/token",
"type": "string",
"title": "The token schema",
"description": "An explanation about the purpose of this instance.",
"default": "",
"examples": [
"abc123"
]
}
},
"additionalProperties": true
}
上面是一个非常简单的 JSON Schema。关注一下关键字段 “required” 和 “properties“. 任意 JSON 对象基于这个 JSON Schema 都必须有一个 “token” 属性,且 “token” 字段值的类型是字符串。总之,出现在 “required” 数组中的字段,一个 JSON 对象都必须包含这些字段。“properties” 部分是用来定义这些字段的。
“additionalProperties” 字段表明是否允许其它额外的属性列在 “properties” 部分。
JSON Schema 是容易理解的,我还可以用它来验证一个属性的最大值 或 最小值 或 正则表达式。
可以通过 JSON Schema website 基于给定的 JSON 对象生成一个 JSON Schema,当然你也可以进行修改。
作为一个测试人员,我们必须掌握有关 JSON Schema 创建 的基本概念。对于自动化断言一个JSON request 和 response 是否满足期望是非常有帮助的。开发人员不是每次都会给你提供一个 JSON Schema,这种情况,你需要掌握如何创建 JSON Schema,就可以直接验证了。
|