• 接口测试框架实战(四)| 搞定 Schema 断言


    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 8

    环境准备

    安装 JSON Schema 包:

    pip install jsonschema
    

    JSON Schema 的使用

    JsonSchema 模板生成

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

    https://www.jsonschema.net/ 11

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

    json11080×720 64.3 KB

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

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

    json31080×265 21.7 KB

    JSON Schema 校验案例

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

    1. def test_schema(self):
    2. schema = {
    3. "type": "object",
    4. "properties": {
    5. "price": {"type": "number"},
    6. "name": {"type":"string"},
    7. },
    8. }
    9. validate(instance={"name": "Eggs", "price": 34.99},schema=schema)

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

    1. >>> from jsonschema import validate
    2. >>> schema = {
    3. ... "type": "object",
    4. ... "properties": {
    5. ... "price": {"type": "string"},
    6. ... "name": {"type":"string"},
    7. ... },
    8. ... }
    9. >>> validate(instance={"name": "Eggs", "price": 34.99},schema=schema)

    返回报错信息:

    1. Traceback (most recent call last):
    2. File "", line 1, in <module>
    3. File "/Users/lixu/Library/Python/3.7/lib/python/site-packages/jsonschema/validators.py",\
    4. line 934, in validate
    5. raise error
    6. jsonschema.exceptions.ValidationError: 34.99 is not of type 'string'

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

  • 相关阅读:
    在线课堂分销商城小程序源码系统 带完整搭建教程
    十、为影院添加影片及座位安排《仿淘票票系统前后端完全制作(除支付外)》
    OceanBase CEO杨冰:小就是大,构建企业核心竞争力
    生存分析的图你也要拼接 图形拼接r 不同的图形组合在一起
    RabbitMQ常见的交换机类型
    java 动态编译运行
    LeetCode75——Day30
    C#学习笔记(3)——类型系统、命名系统、类简介、记录
    JMeter集结点的使用场景以及如何使用?
    MySQL实现的一点总结(三)
  • 原文地址:https://blog.csdn.net/ceshiren456/article/details/126126923