Postman的test本质上是JavaScript代码,通过我们编写测试代码,每一个tests返回True,或是False。
每一个tests实际上就是一个测试用例

官方文档给出了很多验证方式,我们通过实例来进行学习

接口返回结果为json

{"status": 301,"message": "购买商品库存不足","lists": [11]
}

1.检查response的body中是否包含字符串

tests["测试点"] = responseBody.has("需要查找的字符串");
例:
tests["status code"] = responseBody.has("301");
tests["status是否存在"] = responseBody.has("status");
tests["lists是否存在"] = responseBody.has("lists");
tests["lists值为11"] = responseBody.has("11");

注:当json中value为integer时,需要查找的值可以不带双引号,
tests[“xxx”]xxx代表的是你测试点的名字,可以是中文
tests[“xxx”]xxx在一个脚本中如果出现多次,那么只执行第一个,所以尽量不要重复
当value等于中文字符串时,无法验证

2.检查Response Body是否等于字符串
tests[“测试点”] = responseBody === “Response Body返回的内容”;
这个可以用在接口返回内容为纯字符串时,直接检查整个返回结果的正确性,
例子:

接口返回:哈哈
tests["返回为哈哈"] = responseBody === "哈哈";
tests["返回为哈哈"] = responseBody === "哈";
第二个会返回False,必须完全匹配

3.检查相应时间

tests["Response time 小于200毫秒"] = responseTime > 200;
tests["Response time 大于200毫秒"] = responseTime < 200;

4.检查状态码
这个也好理解,就是http请求状态码

tests["Status code is 200"] = responseCode.code === 200;

注:
这里的状态码,跟上面我们用的json里边的”status”不是一回事

5.Code name contains a string

tests["Status code name has string"] = responseCode.name.has("Created");
tests["502"] = responseCode.name.has("Server");
tests["502"] = responseCode.name.has("Unreachable Server");

检查HTTP code 对应的string,如下面给出的list
如下对应表,如果使用fiddler模拟相应的返回,注意fiddler返回的大小写有问题,用下表的string
1 消息(1字头)
▪ 100 Continue
2 成功(2字头)
▪ 200 OK
3 重定向(3字头)
▪ 300 Multiple Choices
▪ 301 Moved Permanently
▪ 302 Move temporarily
…..
▪ 500 Internal Server Error
▪ 501 Not Implemented
▪ 502 Bad Gateway
▪ 503 Service Unavailable
▪ 600 Unparseable Response Headers(省略了一些)

6.设置环境变量/全局变量

postman.setEnvironmentVariable("key", "value");
postman.setGlobalVariable("key", "value");

7.把XML的body转换成JSON对象

var jsonObject = xml2Json(responseBody);

8.检查json的值

var jsonData = JSON.parse(responseBody);tests["Your test name"] = jsonData.value === 100;
还拿上面的json数据做测试
tests["状态码为301"] = jsonData["status"] == "301";
tests["message"] = jsonData["message"] == "购买商品库存不足";
tests["list"] = jsonData["lists"][0] == "11";

9.检查有信息

tests["Content-Type is present"] = postman.getResponseHeader("content-Type");//不区分大小写
tests["Content-Type is present"] = responseHeaders.hasOwnProperty("Content-Type");//区分大小写

10.POST request状态码

tests["Successful POST request"] = responseCode.code === 201 || responseCode.code === 202;

201 - Created 服务器已经创建了文档,Location头给出了它的URL。
202 - Accepted 已经接受请求,但处理尚未完成。

官方文档中还给出了对于json的验证例子
这种基于JSON格式定义JSON数据结构的规范,我们叫他JSON Schema

官方例子

var schema = { "items": { "type": "boolean" }};
var data1 = [true, false];
var data2 = [true, 123];
console.log(tv4.error);
tests["Valid Data1"] = tv4.validate(data1, schema);
tests["Valid Data2"] = tv4.validate(data2, schema);

data1和data2是测试数据,schema相当于验证json的规范
示例中验证data1和data2中的value是否都是boolean类型

先了解下书写json规范文档常用的关键字

关键字 描述

$schema 关键字状态,表示这个模式与 v4 规范草案书写一致。
title   用它给我们的模式提供了标题。
description 关于模式的描述。
type    type 关键字在我们的 JSON 数据上定义了第一个约束:必须是一个 JSON 对象。
properties  定义各种键和他们的值类型,以及用于 JSON 文件中的最小值和最大值。
required    存放必要属性列表。
minimum 给值设置的约束条件,表示可以接受的最小值。
exclusiveMinimum    如果存在 "exclusiveMinimum" 并且具有布尔值 true,如果它严格意义上大于 "minimum" 的值则实例有效。
maximum 给值设置的约束条件,表示可以接受的最大值。
exclusiveMaximum    如果存在 "exclusiveMinimum" 并且具有布尔值 true,如果它严格意义上小于 "maximum" 的值则实例有效。
multipleOf  如果通过这个关键字的值分割实例的结果是一个数字则表示紧靠 "multipleOf" 的数字实例是有效的。
maxLength   字符串实例字符的最大长度数值。
minLength   字符串实例字符的最小长度数值。
pattern 如果正则表达式匹配实例成功则字符串实例被认为是有效的。

还拿第一个json做例子

{"$schema": "http://json-schema.org/draft-04/schema#","id": "","properties": {"lists": {"id": "","items": {"default": 11,"description": "检查list值","id": "","title": "","type": "integer"},"type": "array"},"message": {"default": "购买商品库存不足","description": "message信息","id": "","title": "","type": "string"},"status": {"default": 301,"description": "返回状态值","id": "","title": "","type": "integer"}},"type": "object"
}

一个完整的JSON Schema验证规范
可以根据实际情况删除一些key,但是红色标记的要保留
default默认值,根据实际情况书写,上面例子“商品库存不足时”的状态码为301,如果要对status和message的值进行验证,那么default就可以加上,如果只是验证返回的value是integer或是string类型,可以忽略
还可以加入最大值最小值等限制

下面是测试代码

var jsonData = JSON.parse(responseBody);var schema = {"properties": {"lists": {"items": {"default": 11,"description": "库存不足的商品id","type": "integer"},"type": "array"},"message": {"default": "购买商品库存不足","description": "id为11的商品库存不足","type": "string"},"status": {"description": "status","type": "integer"}},"type": "object"
};tests["json格式验证"] = tv4.validate(jsonData, schema); //验证json格式
tests["返回状态码是200"] = responseCode.code === 200;
tests["状态码为301"] = jsonData["status"] == "301";
tests["message"] = jsonData["message"] == "购买商品库存不足";
tests["list"] = jsonData["lists"][0] == "11";

这样接口返回的json结构和数据我们就可以验证了。

tv4为Postman引入的外部库,想了解的可以去看官方文档
另外Postman还提供了一些方法如:

responseCookies
request.data["key"]=="value"
request.headers["key"]=="value"
request.method
request.url
request
responseHeaders
responseBody
responseTime
responseCode 包含code,name,detail
iteration 

这些方法可以帮助我们做更多的事情,比如通过一个接口拿到cookie值,然后把cookie设置成全局变量,提供给其他接口使用

当我们写测试脚本时,可能会遇到脚本书写错误或是需要一些log来辅助我们完善脚本,
我们可以打开 View->Show Postman Console,打开后我们可以通过console.log(xxx)来输出日志和查看错误信息

通过上面这些知识,我们可以解决大多数的问题,如果想更进一步,需一定的js基础

postman tests实例记录,常用测试结果验证及使用技巧相关推荐

  1. postman tests实例记录

    这段时间准备测试api接口,postman这个工具很是方便,特别是里面的tests的javascript脚本. 记录一下测试接口常用的tests验证的实例. 1.设置环境变量 postman.setE ...

  2. linux磁盘fio压力测试,fio命令 – 对磁盘进行压力测试和验证

    fio是测试IOPS的非常好的工具,用来对磁盘进行压力测试和验证.磁盘IO是检查磁盘性能的重要指标,可以按照负载情况分成照顺序读写,随机读写两大类.FIO是一个可以产生很多线程或进程并执行用户指定的特 ...

  3. JavaScript常用表单验证

    JavaScript常用表单验证 目录: 1:js 字符串长度限制.判断字符长度 .js限制输入.限制不能输入.textarea 长度限制 2.:js判断汉字.判断是否汉字 .只能输入汉字 3:js判 ...

  4. 虹科分享 | 如何测试与验证复杂的FPGA设计(3)——硬件测试

    仿真和验证是开发任何高质量的基于 FPGA 的 RTL 编码过程的基础.在之前的文章中,我们介绍了面向实体/块的仿真以及如何在IP核中执行面向全局的仿真,即通过在每个输入信号上生成激励并验证 RTL ...

  5. ASP.NET MVC4 微信公众平台开发测试一: 验证

    ASP.NET MVC4 微信公众平台开发测试一: 验证 背景,想做一个微信公众号的自动回复系统,于是想动手写一下.记录这些,是一边写程序一边写在这里,也是记录一下自己的思路. 微信公众平台开发时,需 ...

  6. #PRBS# PRBS7高速串行总线的常用测试码型

    PRBS的定义: PRBS: Pseudo-Random Binary Sequence 伪随机二进制序列 PRBS 码具有"随机"特性,是因为在 PRBS 码流中,二进制数&qu ...

  7. 常用正则表达式,常用表单验证javascript代码

    常用正则表达式,常用表单验证javascript代码 function f_MobilCheck(as_SourceString) {  if(as_SourceString.match(/^13[0 ...

  8. 常用测试工具和框架归类

    常用测试工具和框架归类 Web端相关库和工具: 1.Web UI: Selenium.QTP/UFT.其它(大多是对Selenium的包装,比如: Selenide.Katalon.webTest.W ...

  9. java检验电话或传真_对有java开发过程 常用的js验证数字、电话号码、传真、邮箱、手机号码、邮编、日期...

    常用的js验证数字,电话号码,传真,邮箱,手机号码,邮编,日期 1.数字 function testisNum(object) { var s =document.getElementById(obj ...

  10. 硬件常用测试软件整理,方便大家下载

    硬件常用测试软件整理,方便大家下载 2010年06月22日 硬件常用测试软件整理,方便大家下载 [b]直接右键迅雷下载软件,地址都编辑好了,希望这个帖子能方便大家[/b] [b][/b] [b]EVE ...

最新文章

  1. php计划任务每天12点执行一次,php定时执行计划任务之直接在php中执行
  2. 洛谷 [P1024]一元三次方程求解【二分答案】
  3. SQL查询语句精华文章(转)
  4. 区块链技术怎么构架落地应用?
  5. Centos7.0 搭建Zabbix环境
  6. 一起Polyfill系列:让Date识别ISO 8601日期时间格式
  7. Express-static
  8. CSS——可视化格式模型
  9. 使用SQL Server进行时间点恢复
  10. 《PHP基础教程》pdf
  11. webpower邮件营销平台可以带来什么?
  12. 小程序嵌套h5界面,在h5界面调用小程序的扫一扫功能(自用方法3)
  13. 锐龙r7 4750u和i7 10510u 哪个好
  14. 推荐一款多平台快速开发的前端UI框架 —— uView UI
  15. web测试与APP测试方法总结
  16. Linux 日历和计算器命令
  17. ICC Scenario Difinition(什么是Scenario?)
  18. 【CMU15-445数据库】bustub Project #0:Trie 树实现(C++ Primer)
  19. .com域名到期 续费期和偿还期有什么区别?
  20. 围棋吻合度高,并不能确定用了AI

热门文章

  1. 如何查看mysql的ip地址_如何查mysql的ip地址
  2. IE浏览器被删除后添加失败的恢复指南
  3. vue代码查重(任意格式文件)
  4. 微信小程序开发教程——1.0.1appid注册和开发者工具下载
  5. 2008年java占有率_2008年中国城市GDP排名 目前最精确的数据(国家统计局排名):...
  6. 揭开A股38位「 90后」董事长的神秘面纱
  7. 浅谈智能搜索和对话式OS
  8. Ubuntu系统搜狗拼音无法输出
  9. Ubuntu20.04安装搜狗拼音
  10. CodeForces - 1009D Relatively Prime Graph