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的方式存储最为方便,项目改动性最小,这就牵扯到一个问题 ...
随机推荐
- Docker 常用命令和Dockerfile
Docker 简介 官方的解释为:Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows 机器上,也可以实现 ...
- HTTP API自动化测试
重构:发现测试的价值 回到起点,测试要解决什么问题,为什么要做API自动化测试平台?做这个平台,不是为了满足老板的提倡全民自动化的口号,也不是为了浮夸的KPI,更不是宣传自动化可以解决一切问题,发现所 ...
- Till I Collapse CodeForces - 786C (主席树区间加,二分最小值)
大意: 给定序列, 将序列划分为若干段, 使得每段不同数字不超过k, 分别求出k=1...n时的答案. 考虑贪心, 对于某个k 从1开始, 每次查询最后一个颜色数<=k的点作为一个划分, 直到全 ...
- ADO.NET连接数据库增删查改创建公用类
顺序如下:再web.config中添加数据库的用户名和密码 创建公用类. //添加进web.config中的账号和密码 /*<connectionStrings> <add name ...
- IOC+EF+Core项目搭建IOC注入及框架(二)
配置ServiceCollection /// <summary> /// 表示IServiceCollection的扩展 /// </summary> public stat ...
- Linux下定时任务的查看及取消
crontab -l 表示列出所有的定时任务 crontab -r 表示删除用户的定时任务,当执行此命令后,所有用户下面的定时任务会被删除,执行crontab -l后会提示用户:“no crontab ...
- 转 Git使用教程,最详细,最傻瓜,最浅显,真正手把手教
预警:因为详细,所以行文有些长,新手边看边操作效果出乎你的预料) 这个也不错 https://www.cnblogs.com/qcloud1001/p/9796750.html 一:Git是什么?Gi ...
- GSM AT指令 SIM900A TC35
http://download.csdn.net/download/zhangxuechao_/9911264 短信 TEXT格式 设置短消息中心号码: AT+CSCA="+86130101 ...
- 如何用Visual Studio Code远程调试运行在服务器上的nodejs应用
假设我有一个nodejs应用,运行在AWS - 亚马逊云平台上(Amazone Web Service).我想用本地的Visual Studio Code来远程调试服务器端的nodejs应用. Vis ...
- 12-factor应用和微服务架构应用的区别
SAP云平台的帮助文档很多时候将12-factor应用和微服务架构的应用相提并论. 然而从Allan Beck和John Mcteague的Cloud成熟度模型概念里,12-factor应用从成熟度上 ...