Postman使用tv4进行JSON Schema结构验证和断言
JSON Scheme简介
对于JSON格式的请求数据或者响应数据,在不同的数据和场景下往往会有一部分动态的值及字段。此时我们可以使用JSON Scheme Validator(JSON结构验证)来验证JSON的结构,各参数及嵌套参数的类型,以及必要字段。
如:GET http://httpbin.org/get?a=a的响应数据:
{
   "args": {
       "a": "a"
   },
   "headers": {
       "Accept": "*/*",
       "Accept-Encoding": "gzip, deflate",
       "Cache-Control": "no-cache",
       "Host": "httpbin.org",
       "Postman-Token": "08abebe1-eaa4-46a2-9b3a-0f2a5580c44f",
       "User-Agent": "PostmanRuntime/7.15.0"
   },
   "origin": "164.52.33.194, 164.52.33.194",
   "url": "https://httpbin.org/get?a=a"
}
我们可以验证其结构为:
- 整体是一个(类型为)object对象,包含属性args, headers,origin,url, 必要字段(必须出现的字段)假设为所有
 - args类型为object, 包含属性a, a类型为string
 - headers类型为object, 包含属性Accept, Accept-Encoding, Cache-Control, Host, Postman-Token, User-Agent, 这些类型都为string
 - origin类型为string
 - url类型为string
 
转为JSON Schema语法如下:
{
    "type": "object",
    "properties": {
        "args": {"type": "object","properties": {"a": {"type": "string"}} },
        "hearders": {
            "type": "object",
            "properties": {
                "Accept": {"type": "string"},
                "Cache-Control": {"type": "string"},
                "Host": {"type": "string"},
                "Postman-Token": {"type": "string"},
                "User-Agent": {"type": "string"},
            },
        },
        "origin": {"type": "string"},
        "url": {"type": "string"},
    },
    "required": ["args", "headers", "origin", "url"]
}
object类型的验证格式一般为:
{
    "type": "object",
    "properties": {...}
     "required": [....]
}
其中type类型指定为object, properties下写各个子属性,required中填写必须要出现的元素,required中为注明的元素可以不出现,但出现则必须是限定的类型
array类型的验证格式一般为:
{
    "type": "array",
    "items": {...}
     "required": [....]
}
其中type类型为array, items下写各个子项, required中填写必须要出现的元素。
string类型的验证格式:
{"type": "string"}
integer类型的验证格式:
{"type": "integer"}
JSON Scheme还支持引用等很多赋值的语法,详细可以参考:http://json-schema.org/
Postman tv4使用
tv4即 Tiny Validator for JSON data的缩写,微型JSON结构验证器。
在Postman中的使用方法也很简单,首先在Tests脚本中根据响应编写JSON Schema结构模板,然后使用tv3.validate(jsonData, schema)进行验证即可,如下图:

Tests代码如下:
var schema = {
    "type": "object",
    "properties": {
        "args": {"type": "object", "properties": {"a": {"type": "string"}}},
        "hearders": {
            "type": "object",
            "properties": {
                "Accept": {"type": "string"},
                "Cache-Control": {"type": "string"},
                "Host": {"type": "string"},
                "Postman-Token": {"type": "string"},
                "User-Agent": {"type": "string"},
            },
        },
        "origin": {"type": "string"},
        "url": {"type": "string"},
    },
    "required": ["args", "headers", "origin", "url"]
}
pm.test('Schema is valid', function() {
    var jsonData = pm.response.json();
    pm.expect(tv4.validate(jsonData, schema)).to.be.true;
});
运行可看到,断言通过:

Postman使用tv4进行JSON Schema结构验证和断言的更多相关文章
- 使用JSON Schema来验证接口数据
		
最近在做一些关于JSON Schema的基建,JSON Schema可以描述一个JSON结构,那么反过来他也可以来验证一个JSON是否符合期望的格式. 如果之前看我写的<使用joi来验证数据模型 ...
 - Json Schema 是什么?
		
本文地址:Json Schema 是什么? 简单说,Json Schema 其实就是一个标准的 Json 串,它以一个 Json 串来描述我们需要的数据规范,并且支持注释以及验证 Json 文档,即我 ...
 - Json.Net使用JSON Schema验证JSON格式【实例】
		
给出一个Json,验证其格式是否符合规则. { "coord": { //对象 "lon": 145.77, "lat": -16.92 } ...
 - Json.Net使用JSON Schema验证JSON格式
		
Json.NET supports the JSON Schema standard via the JsonSchema and JsonValidatingReader classes. It s ...
 - Postman Postman测试接口之JSON结构化数据提交
		
Postman测试接口之JSON结构化数据提交 by:授客 QQ:1033553122 本文主要是针对结构比较复杂一点的JSON协议数据的提交做个简单说明 举例: 用户下订单接口 接口方向 客户端 ...
 - 技术那么多,你想看看JSON Schema的测试吗?
		
目录 1. 什么是JSON Schema? 2. 如何定义一个JSON Schema 3. 如何测试JSON Schema a) 使用JSON Schema validator GUI b) 在Jav ...
 - Json Schema简介
		
1. 引言 什么是Json Schema? 以一个例子来说明 假设有一个web api,接受一个json请求,返回某个用户在某个城市关系最近的若干个好友.一个请求的例子如下: { "city ...
 - Understanding JSON Schema
		
json schema 在线校验器 译自:Understanding JSON Schema { "type": "object", "propert ...
 - .net 项目使用 JSON Schema
		
.net 项目使用 JSON Schema 最近公司要做配置项的改造,要把appsettings.json的内容放到数据库,经过分析还是用json的方式存储最为方便,项目改动性最小,这就牵扯到一个问题 ...
 
随机推荐
- XML工具——xmlbeans的使用
			
一.安装xmlbeans 1.下载xmlbeans 下载地址:https://gitee.com/shizuru/xmlbeans-2.6.0 2.解压,此处以解压至D盘根目录为例 3.配置环境变量( ...
 - 第十一章 ZYNQ-MIZ702 DDR3 PS读写操作方案
			
本编文章的目的主要用简明的方法在纯PS里对DDR3进行读写. 本文所使用的开发板是Miz702 PC 开发环境版本:Vivado 2015.4 Xilinx SDK 2015.4 11.0本章难度 ...
 - 怎样判断浏览器是否支持canvas
			
1. 如果网页必须使用canvas, 则需要告知用户更换或更新浏览器. 这时可以通过在<canvas>标签之间添加替代元素进行 <canvas id="c1"&g ...
 - Rikka with Graph hdu 6090
			
题解:考虑贪心地一条一条边添加进去. 当 m \leq n-1m≤n−1 时,我们需要最小化距离为 nn 的点对数,所以肯定是连出一个大小为 m+1m+1 的联通块,剩下的点都是孤立点.在这个联通块中 ...
 - el-table el-column selection disable
			
几个要点: 1.通过 selectable 绑定 2.绑定的方法只能返回0/1 <el-table-column type="selection" width="5 ...
 - 图解Java继承内存分配
			
图解Java继承内存分配 继承的基本概念: (1)Java不支持多继承,也就是说子类至多只能有一个父类. (2)子类继承了其父类中不是私有的成员变量和成员方法,作为自己的成员变量和方法. (3)子 ...
 - 在Pytorch上使用稀疏矩阵
			
在Pytorch上使用稀疏矩阵 最近在写一个NLP的小项目,用到了Pytorch做神经网络模型.但是众所周知NLP的一个特点就是特征矩阵是稀疏矩阵,当时处理稀疏矩阵用的是scipy.sparse,现在 ...
 - splice与slice区别
			
共同点:均是删除数组元素并返回结果. 区别:splice会改变原数组,而slice不会.并且splice会导致数组塌陷. 数组塌陷:使用splice删除元素时,剩余的数组元素索引的顺讯会改变. let ...
 - 1.JavaWeb 知识点概览
			
1.tomcat服务器的安装和配置.http协议 1.1 虚拟目录的 /*映射*/(配置Context元素)(server.xml catalina\localhost\) http://blog.c ...
 - 【51nod2026】Gcd and Lcm(杜教筛)
			
题目传送门:51nod 我们可以先观察一下这个$f(x)=\sum_{d|x}\mu(d) \cdot d$. 首先它是个积性函数,并且$f(p^k)=1-p \ (k>0)$,这说明函数$f( ...