多测师是一家拥有先进的教学理念,强大的师资团队,业内好评甚多的接口自动化测试培训机构!

17727591462

联系电话

您现在所在位置:接口自动化测试培训 > 新闻资讯

接口测试框架实战之搞定Schema断言

更新时间:2022-07-08 09:15:17 作者:多测师 浏览:42

  JSON Schema 简介与安装

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

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

接口测试框架实战之搞定Schema断言

  一个 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 中也可以写正则进行匹配。

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

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

  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 "<stdin>", line 1, in <module>

    File "/Users/lixu/Library/Python/3.7/lib/python/site-packages/jsonschema/validators.py",\

     line 934, in validate

      raise error

  jsonschema.exceptions.ValidationError: 34.99 is not of type 'string'

  以上内容为大家介绍了接口测试框架实战之搞定Schema断言,本文由多测师亲自撰写,希望对大家有所帮助。了解更多接口测试相关知识:https://www.aichudan.com/xwzx/

联系电话

17727591462

返回顶部