接口自动化--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;

});

posted @ 2024-04-01 17:10  越长大越孤单哦  阅读(79)  评论(0编辑  收藏  举报