前言
 如果要挖井,就要挖到水出为止。
   明晚公开课给大家讲讲如何用chai.js断言,有用过postman只会右侧点来自动生成断言代码,或在公
司应用postman的朋友们都来听听。 
一、chai.js断言介绍
是一套TDD(测试驱动开发)/BDD(行为驱动开发)的断言库
包含有3个断言库支持BDD风格的expect/should和TDD风格的assert
可以高效的和任何js测试框架搭配使用(支持在postman中应用)
二、postman设置断言的流程
在tests页签截取要对比的实际响应信息(响应头、响应正文、响应状态码等)
利用断言语句 tests[] 或 chai.js 形式把实际响应信息与期望结果对比
执行请求进行结果查看
三、截取实际响应信息的新老版本代码对比
截取名称    老版本    新版本
响应状态码    responseCode.code    pm.response.code
响应状态信息    responseCode.name    pm.response.status
响应头    postman.getResponseHeader('Content-Type')    pm.response.headers
响应正文    responseBody    pm.response.text()
json格式响应正文    JSON.parse(responseBody)    pm.response.json()
四、tests断言基本语法

tests["case01 验证是否为true"] = true;    //false
tests["case02 验证是否1+1=2"] = 1+1 === 2;    //判断是否相等
tests["case03 验证是否包含123"] = "1234567hello".has("123");    //判断是否包含
tests["case04 验证是否3>5"] = 3 > 5 ;    //判断是否相等
tests["case05 与运算"] = 3 > 2 && 3>1 ;    //与运算
tests["case06 或运算"] = 3 > 2 || 3>5 ;    //或运算
tests["case07 非运算"] = !(3 > 2);    //非运算

五、chai.js断言语法
5.1 pm.expect()
 
pm.test("测试用例标题", function () {
    pm.expect(true).to.be.true;    //chai.js断言编写处
});
pm.expect(2<5 && 3<6).to.be.true;    //判断是否为true
pm.expect('everything').to.be.ok;    //判断是否为真值  非空、非0 即为真
pm.expect('hello').to.equal('hello');    //判断是否相等
pm.expect({ foo: 'bar' }).to.eql({ foo: 'bar' });    //判断是否深度相等
pm.expect('foobar').to.have.string('bar');    //判断是否包含字符串
pm.expect('foobar').to.match(/^foo/);    //判断是否包含,支持正则表达式
......

5.2 pm.response
 
pm.test("Status code is 200", function () {
    pm.response.to.have.status(200);    //判断响应状态码是否是200
});

pm.test("Content-Type is present", function () {
    pm.response.to.have.header("Content-Type");    //判断响应头部信息是否包含Content-Type字

});

5.3 tv4(Tiny Validator for JSON data)
postman使用tv4和chai.js断言库可以进行json schema(结构)的断言
 
var schema ={
   "type":"object",  //表示当前节点的类型,最外层type代表json的最外层是什么样的类型
   "properties":{     //代表当前节点的子节点信息。如 access_token 和 expires_in
       "access_token":{
           "type":"string"
       },
       "expires_in":{
           "type": "integer"
       }
   },
   "required": [      //一个数组类型,代表当前节点下必需的节点key
        "access_token",
        "expires_in"
    ]   
}

pm.test('Json Schema is valid', function() {
    var jsonData = pm.response.json();
    pm.expect(tv4.validate(jsonData, schema)).to.be.true;
});

六、总结及反思
实际工作中,断言库功能强大好用即可
json schema可以好好研究利用在接口测试过程中

测试公开课资料系列02--Postman之chai.js断言应用相关推荐

  1. AI公开课:19.02.27周逵(投资人)《AI时代的投资逻辑》课堂笔记以及个人感悟

    AI公开课:19.02.27周逵(投资人)<AI时代的投资逻辑>课堂笔记以及个人感悟 目录 课堂PPT图片 精彩语录 个人感悟 课堂PPT图片 精彩语录 更新中-- 文件图片已经丢失-- ...

  2. AI公开课:19.02.20 雷鸣教授《人工智能革命与机遇》课堂笔记以及个人感悟

    AI公开课:19.02.20 雷鸣教授<人工智能革命与机遇>课堂笔记以及个人感悟 导读:最近几年,NLP方向算法发展很迅速,尤其是前几天的OpenAI的数据集更多,15亿参数模型,性能更好 ...

  3. AI公开课:人工智能领域之北大清华AI公开课之2018年、2019年系列集锦—国内外最著名、最顶级的教授大佬带你了解当下的人工智能时代

    AI公开课:人工智能领域之北大清华AI公开课之2018年.2019年系列集锦-国内外最著名.最顶级的教授大佬带你了解当下的人工智能时代 导读:应广大网友的后台留言要求,博主重新把文章整理一遍,供广大网 ...

  4. 斯坦福大学机器学习公开课视频及课件

    下面是这段时间学习机器学习时下载的一些视频学习资料,斯坦福这套机器学习公开课是其中相当牛X的一个. 公开课的教授Andrew Ng不得不提,能够把很抽象的机器学习过程讲得很清楚,小弟看了这套公开课资料 ...

  5. 计算机教育的进制转换,计算机数制及编码进制转换公开课教学教育资料.doc

    计算机数制及编码进制转换公开课教学教育资料.doc 数制与编码进制转换[学情分析]本课内容是在学生已经学习了计算机发展与应用.计算机系统的组成等知识的基础上进行,已经初步知道了人与计算机进行信息交换通 ...

  6. 海量IT资料 + 各种平台下的Oracle安装文件 + 公开课录像 + 各种视频教程资料

      海量IT资料 + 各种平台下的Oracle安装文件 + 公开课录像 + 各种视频教程资料 + 其它资料 觉得老师的公开课讲的都挺好的,这里把我录的一些公开课视频分享给大家,都用的是<屏幕录像 ...

  7. iTutorGroup 英国留学系列公开课特邀英国皇家小学校长Martin Barker开讲

    iTutorGroup集团旗下青少儿在线教育品牌vipJr持续一个月的"英国留学知多少"系列公开课终于在上周五迎来了收官篇.在最后的"对话篇"课程中,除了英国低 ...

  8. VRCORE系列公开课 | 在杭州探讨VR开发与辅助技术

    VRCORE系列公开课第七站来到了美丽的西湖边,听讲师们聊一聊VR游戏艺术的寻找与探索.使用虚幻引擎制作VR内容以及眼球追踪技术在VR中的应用. VRCORE系列公开课第七站来到了美丽的西湖边,闷热的 ...

  9. 湖上建仓全解析:如何打造湖仓一体数据平台 | DEEPNOVA技术荟系列公开课第四期

    如今,面对数字化快速发展带来的挑战,现代化企业需要打破以往数据的孤岛,让数据从采集.加工.管理到应用,是统一的数据存储和数据处理,甚至是作为全栈式的湖仓一体数据平台,以支撑各类数据赋能业务,进而创造更 ...

最新文章

  1. 中国餐饮连锁行业前景预测及未来战略规划建议报告2022年版
  2. [EULAR文摘] 在总人群中监测ACPA能否预测早期关节炎
  3. linux离线安装docker,centos离线安装docker
  4. 简述python程序的运行原理_谈谈 Python 程序的运行原理
  5. linux 和 windows usb插拔侦测
  6. 计算机的工作原理是二进制原理吗,电子计算机的工作原理基于二进制。()
  7. 可视化程序设计基础(team)——采访上届大佬
  8. Microsoft Excel设置单元格下拉框的方法
  9. 【职场酸甜苦辣咸】+IT女汉子坚持的梦想和原则
  10. DirectX修复工具 4.0 标准版
  11. 微信会员卡跳转小程序实现
  12. mysql neq什么意思_【知识科普】标准中的Eqv、Idt和Neq分别代表什么?
  13. 数据科学导引上机(5)
  14. IDEA如何设置自己喜欢的背景图(超好看的哟)
  15. java:A JNI error has occurred, please check your installation and try again
  16. 商业落地的 DeFi 热潮中,公链们或殊途而同归
  17. 实现基于XDP/eBPF的快速路由转发功能
  18. Download下载DRM
  19. 基于MATLAB的进制转换
  20. ad18放置标尺(测量)

热门文章

  1. 50行代码教你打造一个公众号文章采集器
  2. request.getSession().setAttribute()和 request.setAttribute()
  3. MYSQL-mysql中的truncate的用法
  4. JavaBeans分类
  5. Ant Design Mobile是什么?
  6. 垃圾回收之G1收集过程
  7. java使用drawtext重叠_DrawText的使用
  8. 【c++】_Debug_lt_pred
  9. concurrent.futures调研
  10. 转:com组件纯C++创建