当前位置:网站首页>接口测试框架实战(四)| 搞定 Schema 断言
接口测试框架实战(四)| 搞定 Schema 断言
2022-08-03 04:27:00 【叶赫那拉 赫敏】
JSON Schema 简介与安装
JSON Schema 是描述 JSON 数据结构的一种格式,JSON Schema 模式是一个词汇表。通过 JSON Schema 可以注释 JSON 的字段以及字段数据类型等信息。
在实际工作中,对接口返回值进行断言校验,除了常用字段的断言检测以外,还要对其他字段的类型进行检测。对返回的字段一个个写断言显然是非常耗时的,这个时候就需要一个模板,可以定义好数据类型和匹配条件,除了关键参数外,其余可直接通过此模板来断言,Json Schema 可以完美实现这样的需求。通过校验 JSON Schema 就可以判断 Response 是否符合约定。
一个 JSON 格式的数据,通常是由以下一种或多种数据类型组成的:
- string
- Numeric(integer、number)
- object
- array
- boolean
- null
JSON Schema 中对上面的 6 种数据类型,都有相应的属性对其进行描述。
Json Schema 官网:http://json-schema.org/implementations.html 8
环境准备
安装 JSON Schema 包:
pip install jsonschema
JSON Schema 的使用
JsonSchema 模板生成
- 首先要借助于 Json Schema Tool 的网站:
https://www.jsonschema.net/ 11
将返回 JSON 字符串复制到页面左边,然后点击 INFER SHCEMA,就会自动转换为 Schema JSON 文件类型,会将每个地段的返回值类型都设置一个默认类型;在 pattern 中也可以写正则进行匹配:
- 点击“设置”按钮会出现各个类型返回值更详细的断言设置,这个就是 Schema 最常用也是最实用的功能,也可以对每种类型的字段最更细化的区间值校验或者断言,例如长度,取值范围等。
- 点击复制按钮,可以将生成的 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'
以上,JSON Schema 作为接口测试的数据校验利器让工作变得更加高效,也更好的实现了接口监控,能知道哪里出了问题并及时纠正。更多内容,在后续章节探讨。
边栏推荐
- 8.电影评论分类:二分类问题
- 【生物素叠氮化物|cas:908007-17-0】价格_厂家
- t条件判断语句与if循环
- 好消息!北京、珠海PMP考试时间来啦
- 打破传统电商格局,新型社交电商到底有什么优点?
- Shell条件语句判断
- 数据库基本概述与SQL概述
- 工程制图第九章作业
- The flink sql task is changed, and after adding several fields to the sql, an error occurs when restoring from the previously saved savepoint.
- UV 裂解的生物素-PEG2-叠氮|CAS:1192802-98-4生物素接头
猜你喜欢
StarRocks July Community Update
redis键值出现 xacxedx00x05tx00&的解决方法
Problems that need to be solved for interrupting the system
8.电影评论分类:二分类问题
关于#sql#的问题,如何解决?
OpenFOAM extracts equivalency and calculates area
IO进程线程->线程->day5
社交电商:链动2+1模式,为什么能在电商行业生存那么久?
"Obs" start pushing flow failure: the Output. The StartStreamFailed call process
TCP 和UDP 的详细介绍
随机推荐
关于#sql#的问题,如何解决?
MySQL【约束】
深圳线下报名|StarRocks on AWS:如何对实时数仓进行极速统一分析
刚上线就狂吸70W粉,新型商业模式“分享购”来了,你知道吗?
肖sir__面试接口测试
社交电商:链动2+1模式,为什么能在电商行业生存那么久?
数据库性能系列之索引(中)
v-text指令:设置标签内容
荧光标记多肽FITC/AMC/FAM/Rhodamine/TAMRA/Cy3/Cy5/Cy7-Peptide
The flink sql task is changed, and after adding several fields to the sql, an error occurs when restoring from the previously saved savepoint.
CyberArk被评为2022年Gartner特权访问管理魔力象限领导者
测开:项目管理模块-项目curd开发
【uni-APP搭建项目】
表的创建、修改与删除
工程水文学知识点
数字化时代,企业如何建立自身的云平台与商业模式的选择?
SeleniumWebDriver扩展插件开发
计网试卷概念
Dialog manager in the fourth chapter: the dialog message loop
Live | StarRocks technology insider: low base dictionary global optimization