json schema生成工具_接口测试框架实战(四)| 搞定 Schema 断言

a19c963df99efc7795e44344bd87e96c.png

本文节选自霍格沃兹《测试开发实战进阶》课程教学内容,进阶学习文末加群。

JSON Schema 简介与安装

JSON Schema 是描述 JSON 数据结构的一种格式,JSON Schema 模式是一个词汇表。通过 JSON Schema 可以注释 JSON 的字段以及字段数据类型等信息。

在实际工作中,对接口返回值进行断言校验,除了常用字段的断言检测以外,还要对其他字段的类型进行检测。对返回的字段一个个写断言显然是非常耗时的,这个时候就需要一个模板,可以定义好数据类型和匹配条件,除了关键参数外,其余可直接通过此模板来断言,Json Schema 可以完美实现这样的需求。通过校验 JSON Schema 就可以判断 Response 是否符合约定。

一个 JSON 格式的数据,通常是由以下一种或多种数据类型组成的:

  1. string
  2. Numeric(integer、number)
  3. object
  4. array
  5. boolean
  6. null

JSON Schema 中对上面的 6 种数据类型,都有相应的属性对其进行描述。

Json Schema 官网:http://json-schema.org/implementations.html

环境准备

安装 JSON Schema 包:

pip install jsonschema

JSON Schema 的使用

JsonSchema 模板生成

1. 首先要借助于 Json Schema Tool 的网站:

https://www.jsonschema.net/

将返回 JSON 字符串复制到页面左边,然后点击 INFER SHCEMA,就会自动转换为 Schema JSON 文件类型,会将每个地段的返回值类型都设置一个默认类型;在 pattern 中也可以写正则进行匹配:

bd535bcc260aa059e7eb988c3e510ae3.png

2. 点击“设置”按钮会出现各个类型返回值更详细的断言设置,这个就是 Schema 最常用也是最实用的功能,也可以对每种类型的字段最更细化的区间值校验或者断言,例如长度,取值范围等。

025d8a7458b692af5903d4329393b202.png

3. 点击复制按钮,可以将生成的 Schema 模板保存下来。

98d1ebf53da69b185067e2ab6e72c14e.png
JSON Schema 校验案例

下面有个 JSON Schem 例子,它只有两个重要字段 name 和 price。这个 schema 规定 name 必须是 string 类型,price 必须是 number 类型。使用 JSON Schema 进行校验,使用 validate 方法,输入一个 name 为 Eggs 和 price 为 34.99 的数据进行校验:

def test_schema(self):    schema = {        "type": "object",        "properties": {            "price": {"type": "number"},            "name": {"type":"string"},        },}validate(instance={"name": "Eggs", "price": 34.99},schema=schema)

如果将 number 写成 string,则会出现报错:

>>> from jsonschema import validate>>> schema = {...     "type": "object",...     "properties": {...         "price": {"type": "string"},...         "name": {"type":"string"},...     },... }>>> validate(instance={"name": "Eggs", "price": 34.99},schema=schema)

返回报错信息:

Traceback (most recent call last):  File "", line 1, in   File "/Users/lixu/Library/Python/3.7/lib/python/site-packages/jsonschema/validators.py",   line 934, in validate    raise errorjsonschema.exceptions.ValidationError: 34.99 is not of type 'string'

以上,JSON Schema 作为接口测试的数据校验利器让工作变得更加高效,也更好的实现了接口监控,能知道哪里出了问题并及时纠正。更多内容,在后续章节探讨。

(文章来源于霍格沃兹测试学院)

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值