json schema 测试
上一篇 /
下一篇 2017-10-24 08:09:53
/ 个人分类:自动化测试
最近在开发接口自动化测试工具时,发现restFull接口测试工具中提供了json schema的测试,特意去了解json schema。
Json schema 于json 类似于xml schema 于 xml,用于定义如何基于 JSON 格式描述 JSON 数据结构的规范,从而可利用此 数据校验、文档生成和接口数据交互控制等。如果接口返回的数据格式是json,那么我们就可以创建json schema来校验接口返回的数据是否满足要求,可校验必需字段是否返回,字段类型是否正确,值是否满足要求如大小、范围或要求包含某些值等。如此,我们便可实现大部分接口测试用例。
json schema定义的主要关键字如下( draft 4版本):
关键字 | 描述 |
---|
$schema | The $schema 关键字状态,这种模式被写入草案V4规范。 |
title | 将使用此架构提供一个标题 |
description | 架构的一点描述 |
type | 我们 JSON 数据类型关键字定义的第一个约束条件:它必须是一个JSON对象 |
properties | 定义各个键和它们的值类型,最小和最大值中要使用JSON文件 |
required | 这样可以使所需的属性的列表 |
minimum | 这是约束的值,并代表可接受的最小值 |
exclusiveMinimum | 如果“exclusiveMinimum”的存在,并且具有布尔值true的实例是有效的,如果它是严格的最低限度的值 |
maximum | 这是约束的值被提上表示可接受的最大值 |
exclusiveMaximum | 如果“exclusiveMaximum”的存在,并且具有布尔值true的实例是有效的,如果它是严格的值小于“最大”。 |
multipleOf | 数值实例有效反对“multipleOf”分工的实例此关键字的值,如果结果是一个整数。 |
maxLength | 字符串实例的长度被定义为字符的最大数目 |
minLength | 字符串实例的长度被定义为字符的最小数目 |
pattern | String实例被认为是有效的,如果正则表达式匹配成功实例 |
json schema的经典样例如下:
{
"$schema": "http://json-schema.org/draft-04/schema#",
"title": "Product",
"description": "A product from Acme's catalog",
"type": "object",
"properties": {
"id": {
"description": "The unique identifier for a product",
"type": "integer"
},
"name": {
"description": "Name of the product",
"type": "string"
},
"price": {
"type": "number",
"minimum": 0,
"exclusiveMinimum": true
}
},
"required": ["id", "name", "price"]}
json schema 校验json字符串是否满足要求,则是通过校验关键字去校验,如required,是否必需,maxItems用于校验数组的大小等,详细请见https://datatracker.ietf.org。所以我们要创建好json schema才能根据要求去校验数据,https://jsonschema.net/#/editor可用于生成json schema不过因google被墙可能无法正常使用,亦可搜索其它生成工具。
收藏
举报
TAG: