接口自动化--postman(3)高级用法,断言详解
Postman断言
在进行API测试时,断言是一项重要的功能。它能帮助我们验证接口的响应是否符合预期结果,从而确保API的正确性和可靠性。在Postman中,我们可以使用断言功能来设置预期结果,并与实际结果进行比较。
为了进行自动化测试,我们必须让计算机帮助我们判断实际结果与预期结果是否一致。
我们可以通过断言,来让计算机运行时,帮助我们判断结果
断言:计算机自动判断两组数据的关系是否为真时的过程,就叫做断言。
一般一个完整的接口测试,包括:请求->获取响应正文->断言,请求和获取响应正文很常见。断言一般是对请求的响应结果做操作,判断预期结果与实际结果是否一致。
断言主要是在Test操作框内进行设置,使用JavaScript语言编写,断言的结果在下方响应内容的TestResult内
postman断言的流程
①在postman的tests页签中截取要对比的响应信息;
②利用断言语句tests[]或chai.js形式把实际响应信息与期望结果对比;
③执行请求进行结果查看;
二、Postman断言的语法
1、语法一:tests[‘测试用例名称’] = 逻辑表达式;
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); //非运算
2、语法二:chai.js断言语法
chai.js简介:是一套TDD(测试驱动开发)/BDD(行为驱动开发)的断言库
包含有3个断言库支持BDD风格的expect/should和TDD风格的assert
可以高效的和任何js测试框架搭配使用(支持在postman中应用)
pm 对象还提供了测试相关功能:
pm.test 函数用来生成一个测试,可以输入测试标题,并加入各种断言。断言全部成功则测试成功,某一个断言失败则测试失败;一个请求可以添加多个测试函数。
pm.expect 函数,用来生成各种断言;
pm.response 对象中也提供了很多内置的断言语句。
pm.test(testName:String, specFunction:Function):Function
接收两个参数: testName 用字符串输入一个测试名称,会显示在最终报告上;specFunction 接收一个回调函数,在该回调函数内部运行断言语句。
pm.expect():该函数对于处理来自响应 response 或变量 variables 的数据断言很有用。pm.expect 主要与 pm.test 联用。
expect 是期望的意思,也就是传递给 expect 函数的值是否符合预期。通过一系列的调用链来实现。
pm.expect() 接收一个断言内容(相当于实际结果),可以是任意数据类型;
.to 是连接符,用于连接断言与判断;
.include() 用于指定断言方式和预期结果。
断言方式
相等:.equal(value)
断言目标严格等于(===)value。
pm.expect('hello').to.equal('hello'); //判断是否相等
取非:.not
对之后的断言无条件取反
包含:.include(value) / .contains(value)
表示实际结果是否包含预期结果,两个函数用法一致。
判断结果是否为真:.ok/.true
断言目标为真值。.true 与 .ok 的区别是不进行类型转换,只能为布尔值 true 才能通过断言。
pm.expect(2<5 && 3<6).to.be.true; //判断是否为true
pm.expect('everything').to.be.ok; //判断是否为真值 非空、非0 即为真
pm.expect({ foo: 'bar' }).to.eql({ foo: 'bar' }); //判断是否深度相等
pm.expect('foobar').to.have.string('bar'); //判断是否包含字符串
pm.expect('foobar').to.match(/^foo/); //判断是否包含,支持正则表达式
2、pm.response
pm.response.to.have.status(code:Number) :判断响应结果是否包含指定的状态码;
响应结果如果是json,断言响应体(json)中某个键名对应的值:Response body : JSON value check
3、tv4(Tiny Validator for JSON data)--postman断言库可以进行json schema(结构)的断言
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;
});
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)
2023-04-01 软件测试经验与教训之计划测试策略
2023-04-01 软件测试经验与教训之测试小组的管理和软件测试的职业发展
2023-04-01 软件测试经验与教训之管理测试项目
2023-04-01 软件测试经验与教训之测试文档和与程序员交互
2023-04-01 软件测试经验与教训之测试自动化
2023-04-01 软件测试经验与教训之测试手段与程序错误分析