接口测试|Postman设置断言

本文介绍了如何在Postman中设置断言来验证接口测试的结果。包括旧版和新版Postman的不同断言语法,以及使用Chai.js断言库的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Postman设置断言

作为一款接口测试工 具,postman需要对发送请求后返回的结果是否正确做验证,在postman中通过 tests页签做请求的验证,也称为断言。

Postman设置断言的流程

  1. 在tests页签截取要对比的实际响应信息(响应头、响应正文、响应状态码等)
  2. 利用断言语句 tests[] 或 chai.js 形式把实际响应信息与期望结果对比
  3. 执行请求进行结果查看

在postman设置断言,存在新老版本的断言语法不一致的情况,目前两种语法都可以使用:

语法一: tests[‘测试用例名称’] = 逻辑表达式

断言语法一视图:

在这里插入图片描述

postman在tests页签获取响应内容:

tests页签支持javascripts语法,可以把获取的响应内容放入定义的变量中。 然后使用tests[变量名]进行输出。

截取实际响应信息的新老版本代码对比;如下图

在这里插入图片描述

1、获取响应行

var code = responseCode.code; //获取响应状态码
var name = responseCode.name; //获取响应状态信息

2、获取响应头

var content_type = postman.getResponseHeader(‘Content-Type’) //获取响应头
var path = postman.getResponseCookie(‘_ac_app_ua’).path ; //获取cookie信息

3、获取响应正文

var body = responseBody

4、获取响应时间

var time = responseTime

5、利用正则表达式截取部分响应正文

var title = body.match(new RegExp(‘(.+?)’))[1]

6、响应正文为json时,可以利用postman进行解析再获取部分响应正文

var jsondata = JSON.parse(responseBody); //把响应正文转化为json对象
var token = jsondata.access_token; //json对象名.键名

在tests页签中编写语法如下:

// 新旧版本写法------------
//获取响应行
//旧版本
var code = responseCode.code  //获取响应状态码
tests["case_demo_01: 验证响应状态码是否为200"] = code === 200 //做断言
var name = responseCode.name  //获取响应状态信息
tests["case_demo_02: 验证响应的状态信息是否正确"] = name === "OK"
//新版本
var code = pm.response.code //获取响应状态码
tests["case_demo_001: 验证响应状态码是否为200"] = code === 200 //做断言
var name = pm.response.status  //获取响应状态信息
tests["case_demo_002: 验证响应的状态信息是否正确"] = name === "OK"

//获取响应头

//旧版本
var content_type = postman.getResponseHeader('Content-Type')  //获取响应头
tests["case_demo_03: 验证响应头是否正确"] = content_type === "application/json; encoding=utf-8"
//新版本
var content_type = pm.response.headers  //获取响应头
tests["case_demo_003: 验证响应头是否正确 "+content_type] = true

// 获取响应时间
//旧版本
var time = responseTime
tests["case_demo_04: 验证响应时间是否正确 "+ time] = true
tests["case_demo_004: 验证响应时间是否在100-500ms以内返回"] = time >=100 && time<=500
//新版本
var time = pm.response.responseTime
tests["case_demo_00004: 验证响应时间是否正确 "+ time] = true

//获取响应正文 text
//旧版本
var body = responseBody
tests['case_demo_05: 验证响应正文是否正确 '+ body] = true
tests["case_demo_005: 验证响应正文是否包含 7200"] = body.has("7200")  //判断是否包含
//新版本  
var body = pm.response.text()
tests['case_demo_0005: 验证响应正文是否正确 '+ body] = true
var title = body.match(new RegExp('<title>(.+?)</title>'))[1];  //利用正则表达式截取部分响应正文
tests["case_demo_00005: 验证响应正文中的title是否包含 猫_百度搜索"] = title === "猫_百度搜索"

//json格式响应正文  通过json视图更清晰
//旧版本
var jsondata = JSON.parse(responseBody)  //把响应正文转化为json对象
var expires_in = jsondata.expires_in  //json对象名.键名
tests["case_demo_06: 验证json格式响应正文是否正确 "] = expires_in === 7200
//新版本
var jsondata = pm.response.json()  //把响应正文转化为json对象
var expires_in = jsondata.expires_in  //json对象名.键名
tests["case_demo_006: 验证json格式响应正文是否正确 "] = expires_in === 7200

断言的展示结果如下图:

在这里插入图片描述

语法二: Chai.js断言库,可以通过右侧页签点击生成代码(新版本写法-推荐)

chai.js断言介绍:

  1. 是一套TDD(测试驱动开发)/BDD(行为驱动开发)的断言库
  2. 包含有3个断言库支持BDD风格的expect/should和TDD风格的assert
  3. 可以高效的和任何js测试框架搭配使用(支持在postman中应用)

断言语法二视图:

在这里插入图片描述

在tests页签中编写语法如下:

//新版本写法------
pm.test("测试用例标题", function () {
    pm.expect(true).to.be.true;    //chai.js断言编写处  
});

pm.test("case_demo_01 *****", function () {
    pm.expect(2<5 && 3<6).to.be.true         //判断是否为true
});

pm.test("case_demo_02 *****", function () {
    pm.expect("everything").to.be.ok         //判断是否为真值  非空、非0 即为真
});

pm.test("case_demo_03 *****", function () {
    pm.expect("hello").to.equal("hello")    //判断是否相等
});

pm.test("case_demo_04 *****", function () {
    pm.expect({list:"aaa"}).to.eql({list:"aaa"})//判断是否深度相等
});

pm.test("case_demo_05 *****", function () {
    pm.expect("foobar").to.have.string("bar")    //判断是否包含字符串
});

pm.test("case_demo_06 *****", function () {
    pm.expect("foobar").to.match(/^foo/)   //判断是否包含,支持正则表达式
});

//实例------
//响应行的状态码
pm.test("case_demo_07 *****", function () {
    pm.expect(pm.response.code === 200).to.be.true   //判断响应状态码是否为200
});
//响应行的信息
pm.test("case_demo_08 *****", function () {
    pm.expect(pm.response.status === "OK").to.be.true   //判断响应状态信息是否为OK
});
//响应正文 text
pm.test("case_demo_09 *****", function () {
    pm.expect(pm.response.text()).to.have.string("猫_百度搜索")  //判断响应正文中是否包含猫_百度搜索
});
//响应正文 json
pm.test("case_demo_10 *****", function () {
    var jsonData = pm.response.json();
    pm.expect(jsonData.expires_in).to.eql(7200);  //判断json响应正文中是否有7200
});

断言的展示结果如下图:

在这里插入图片描述

更多技术文章

<think>嗯,用户想知道如何在Postman设置接口测试断言。首先,我需要回忆一下Postman断言功能。记得Postman的Tests标签是用来写断言的,对吧?用户可能已经知道如何发送请求,但不确定如何验证响应结果。 根据引用内容,用户提到了四种常用的断言方法。比如,检查状态码、响应体包含特定内容、JSON数据匹配和响应时间。我需要一步步解释这些步骤,确保用户能理解每个部分的作用。 首先,打开Postman,创建请求后进入Tests标签。这里需要写JavaScript代码,但Postman提供了一些内置的语法糖,比如pm.test和pm.expect,这样用户不需要从头写复杂的代码。比如,检查状态码是否为200,可以用pm.response.to.have.status(200)。这应该比较简单。 然后,响应体包含特定字符串。比如,用户可能希望确认返回的数据中有“success”关键字。这时候可以用pm.expect(text).to.include("success")。需要注意的是,如果响应是JSON格式,可能需要先解析,但Postman的pm.response.json()会自动处理,所以可以直接用pm.expect(jsonData.property).to.eql(expectedValue)。 接下来是JSON数据匹配。这里可能需要处理嵌套结构,比如data下的某个字段是否等于预期值。用户需要知道如何访问嵌套属性,比如jsonData.data.username,并断言它等于"admin"。这部分需要详细说明,避免用户因为路径错误而失败。 响应时间断言也很重要,特别是性能测试。设置pm.expect(pm.response.responseTime).to.be.below(500)可以检查接口是否在500毫秒内响应。用户可能关心接口的延迟,所以这个断言能帮助他们监控性能。 另外,引用里提到的断言结果显示在Test Results中,用户运行请求后可以在下方看到结果。需要提醒用户注意查看这个区域,确认断言是否通过。如果有多个断言,每个都会列出成功或失败,方便调试。 用户可能的疑问点是如何处理复杂的JSON结构或者数组。比如,如果返回的是一个列表,如何断言其中的某个元素是否符合条件。这时候可能需要用到数组方法,比如.find或.filter,结合pm.expect来检查是否存在符合条件的元素。不过用户的问题可能暂时不需要这么深入,但作为扩展,可以提到这些可能性。 还有,用户可能不知道如何组合多个断言。需要说明可以在Tests标签中连续写多个pm.test块,每个处理不同的检查点。比如同时检查状态码、响应体和响应时间,确保接口的各个方面都符合预期。 最后,引用中的建议提到合理组合不同类型的断言,用户可能需要根据具体业务需求选择哪些断言是必要的。比如,有的接口需要严格的数据校验,而有的则更关注响应速度。需要强调灵活运用,根据实际情况调整断言策略。 总结一下,步骤应该是:打开Tests标签,使用内置方法编写断言脚本,运行请求后查看Test Results。同时,给出常见断言的示例代码,并解释每个部分的作用,帮助用户理解如何修改以适应自己的测试场景。</think>在Postman中配置接口测试断言主要通过`Tests`标签实现,以下是具体操作步骤及常见断言方法: ### 一、基础断言配置步骤 1. **打开Tests标签** - 在请求编辑界面右侧选择`Tests`标签页 - 使用Postman提供的断言语法糖(如`pm.test`)编写脚本 2. **状态码断言** ```javascript // 验证状态码为200 pm.test("Status code is 200", function () { pm.response.to.have.status(200); }); ``` 3. **响应体包含断言** ```javascript // 验证响应包含特定字符串 pm.test("Body contains success", function () { pm.expect(pm.response.text()).to.include("success"); }); ``` ### 二、高级断言方法 4. **JSON数据验证** ```javascript // 验证JSON数据结构 pm.test("Verify user data", function () { const jsonData = pm.response.json(); pm.expect(jsonData.data.username).to.eql("admin"); pm.expect(jsonData.data.age).to.be.above(18); }); ``` 5. **响应时间断言** ```javascript // 验证响应时间小于500ms pm.test("Response time validation", function () { pm.expect(pm.response.responseTime).to.be.below(500); }); ``` ### 三、断言结果查看 - 发送请求后,在响应区底部`Test Results`标签查看断言结果 - 通过的断言显示绿色勾选标记,失败显示红色警示[^1][^3]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值