接口测试|Postman设置断言

简介: 接口测试|Postman设置断言

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
});

断言的展示结果如下图:

在这里插入图片描述

相关文章
|
2月前
|
消息中间件 分布式计算 大数据
大数据-123 - Flink 并行度 相关概念 全局、作业、算子、Slot并行度 Flink并行度设置与测试
大数据-123 - Flink 并行度 相关概念 全局、作业、算子、Slot并行度 Flink并行度设置与测试
150 0
|
4天前
|
监控 JavaScript 测试技术
postman接口测试工具详解
Postman是一个功能强大且易于使用的API测试工具。通过详细的介绍和实际示例,本文展示了Postman在API测试中的各种应用。无论是简单的请求发送,还是复杂的自动化测试和持续集成,Postman都提供了丰富的功能来满足用户的需求。希望本文能帮助您更好地理解和使用Postman,提高API测试的效率和质量。
31 11
|
3天前
|
数据采集 算法 数据安全/隐私保护
【硬件测试】基于FPGA的2FSK调制解调系统开发与硬件片内测试,包含信道模块,误码统计模块,可设置SNR
本文介绍了基于FPGA的2FSK调制解调系统,包含高斯信道、误码率统计模块及testbench。系统增加了ILA在线数据采集和VIO在线SNR设置模块,支持不同SNR下的硬件测试,并提供操作视频指导。理论部分涵盖频移键控(FSK)原理,包括相位连续与不连续FSK信号的特点及功率谱密度特性。Verilog代码实现了FSK调制解调的核心功能,支持在不同开发板上移植。硬件测试结果展示了不同SNR下的性能表现。
23 6
|
1月前
|
测试技术 API
在性能测试中,怎样设置合理的迭代次数?
在性能测试中,迭代次数的合理设置至关重要,它直接影响到测试结果的准确性和可靠性。
38 2
|
1月前
|
JSON Java 测试技术
SpringCloud2023实战之接口服务测试工具SpringBootTest
SpringBootTest同时集成了JUnit Jupiter、AssertJ、Hamcrest测试辅助库,使得更容易编写但愿测试代码。
60 3
|
2月前
|
测试技术 Python
自动化测试项目学习笔记(一):unittest简单运行(初始化,清除,设置测试行为)
本文介绍了Python的unittest框架的基础用法,包括测试初始化(setup)、清除(tearDown)函数的使用,以及assertEqual和assertGreaterEqual等断言方法,并展示了如何创建测试用例,强调了测试函数需以test_开头才能被运行。
68 1
自动化测试项目学习笔记(一):unittest简单运行(初始化,清除,设置测试行为)
|
1月前
|
Web App开发 定位技术 iOS开发
Playwright 是一个强大的工具,用于在各种浏览器上测试应用,并模拟真实设备如手机和平板。通过配置 `playwright.devices`,可以轻松模拟不同设备的用户代理、屏幕尺寸、视口等特性。此外,Playwright 还支持模拟地理位置、区域设置、时区、权限(如通知)和配色方案,使测试更加全面和真实。例如,可以在配置文件中设置全局的区域设置和时区,然后在特定测试中进行覆盖。同时,还可以动态更改地理位置和媒体类型,以适应不同的测试需求。
Playwright 是一个强大的工具,用于在各种浏览器上测试应用,并模拟真实设备如手机和平板。通过配置 `playwright.devices`,可以轻松模拟不同设备的用户代理、屏幕尺寸、视口等特性。此外,Playwright 还支持模拟地理位置、区域设置、时区、权限(如通知)和配色方案,使测试更加全面和真实。例如,可以在配置文件中设置全局的区域设置和时区,然后在特定测试中进行覆盖。同时,还可以动态更改地理位置和媒体类型,以适应不同的测试需求。
66 1
|
3月前
|
JSON Java 数据格式
使用postMan调试接口出现 Content type ‘multipart/form-data;charset=UTF-8‘ not supported“
本文介绍了使用Postman调试接口时遇到的“Content type ‘multipart/form-data;charset=UTF-8’ not supported”错误,原因是Spring Boot接口默认只接受通过`@RequestBody`注解的请求体,而不支持`multipart/form-data`格式的表单提交。解决方案是在Postman中将请求体格式改为`raw`并选择`JSON`格式提交数据。
使用postMan调试接口出现 Content type ‘multipart/form-data;charset=UTF-8‘ not supported“
|
2月前
|
JSON 算法 数据可视化
测试专项笔记(一): 通过算法能力接口返回的检测结果完成相关指标的计算(目标检测)
这篇文章是关于如何通过算法接口返回的目标检测结果来计算性能指标的笔记。它涵盖了任务描述、指标分析(包括TP、FP、FN、TN、精准率和召回率),接口处理,数据集处理,以及如何使用实用工具进行文件操作和数据可视化。文章还提供了一些Python代码示例,用于处理图像文件、转换数据格式以及计算目标检测的性能指标。
77 0
测试专项笔记(一): 通过算法能力接口返回的检测结果完成相关指标的计算(目标检测)
|
3月前
|
移动开发 JSON Java
Jmeter实现WebSocket协议的接口测试方法
WebSocket协议是HTML5的一种新协议,实现了浏览器与服务器之间的全双工通信。通过简单的握手动作,双方可直接传输数据。其优势包括极小的头部开销和服务器推送功能。使用JMeter进行WebSocket接口和性能测试时,需安装特定插件并配置相关参数,如服务器地址、端口号等,还可通过CSV文件实现参数化,以满足不同测试需求。
263 7
Jmeter实现WebSocket协议的接口测试方法