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版本):
关键字描述
$schemaThe $schema 关键字状态,这种模式被写入草案V4规范。
title将使用此架构提供一个标题
description架构的一点描述
type我们 JSON 数据类型关键字定义的第一个约束条件:它必须是一个JSON对象
properties定义各个键和它们的值类型,最小和最大值中要使用JSON文件
required这样可以使所需的属性的列表
minimum这是约束的值,并代表可接受的最小值
exclusiveMinimum如果“exclusiveMinimum”的存在,并且具有布尔值true的实例是有效的,如果它是严格的最低限度的值
maximum这是约束的值被提上表示可接受的最大值
exclusiveMaximum如果“exclusiveMaximum”的存在,并且具有布尔值true的实例是有效的,如果它是严格的值小于“最大”。
multipleOf数值实例有效反对“multipleOf”分工的实例此关键字的值,如果结果是一个整数。
maxLength字符串实例的长度被定义为字符的最大数目
minLength字符串实例的长度被定义为字符的最小数目
patternString实例被认为是有效的,如果正则表达式匹配成功实例

    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:

 

评分:0

我来说两句

Open Toolbar