一、接口测试
1. postman断言
1)postman断言简介
- 核心功能:让Postman工具代替人工自动判断预期结果和实际结果是否一致
- 代码位置:断言代码书写在Tests标签页中,查看断言结果在Test Results标签页
- 执行时机:请求发送完成后服务器解析响应结果后才会执行Tests标签中的代码
2)常用断言
- 断言响应状态码
![]()
- 代码模板:
pm.test("Status code is 200", function(){
pm.response.to.have.status(200);
});
- 参数说明:
- 第一个参数:"Status code is 200"可任意修改,仅作为断言结果显示文字
- 第二个参数:匿名函数调用,实际执行断言判断
- 修改方法:只需修改200为需要断言的状态码即可
- 断言包含某字符串
![]()
- 代码模板:
pm.test("Body matches string", function(){
pm.expect(pm.response.text()).to.include('string_you_want_to_search');
});
- 特点:
- 不关心字符串属于哪个key的值
- 只要响应中包含指定字符串即通过
- 局限性:无法判断多个相同字符串的具体来源
- 断言JSON数据
![]()
- 代码模板:
var jsonData = pm.response.json();
pm.expect(jsonData.value).to.eql(100);
- 关键语法:
- var jsonData = pm.response.json():获取整个JSON响应体
- jsonData.value:通过点语法逐级访问嵌套key
- 优势:能精确判断特定key的值,避免字符串断言的模糊匹配问题
3)断言工作原理
![]()
- 执行顺序:
- 组织HTTP请求协议格式
- 发送请求并接收响应
- 解析HTTP响应包
- 执行Tests中的断言代码
- 核心要点:断言代码是在收到并解析完响应后才执行
2. postman关联
1)关联简介
![]()
- 应用场景:当接口之间存在数据依赖时使用
- 示例1:登录接口返回的令牌被添加员工接口依赖
- 示例2:添加员工接口返回的员工ID被查询员工接口依赖
- 实现步骤:
- 发送接口B请求获取响应数据
- 将数据存入公共容器(全局/环境变量)
- 接口A从容器中提取数据发送请求
2)应用案例
- 例题:接口测试城市名查询
![]()
- 实现步骤:
- 发送天气接口请求获取城市名
- 将城市名存入全局变量
- 百度搜索接口使用{{全局变量名}}语法引用
- 关键代码:
var jsonData = pm.response.json();
var city = jsonData.weatherinfo.city;
pm.globals.set('glib_city', city);
- 例题:添加员工接口测试
![]()
- 关键要点:
- 令牌拼接格式:Bearer +令牌值(注意首字母大写和空格)
- 使用环境变量存储:pm.environment.set('env_token', token)
- 请求头设置:Authorization: {{env_token}}
- 注意事项:
- 添加员工需保证手机号唯一
- 请求头和请求体数据必须按规范格式填写
3. 查询员工接口实现提示
![]()
- 双重依赖:
- URL路径依赖员工ID:/api/sys/user/{{员工ID}}
- 请求头依赖登录令牌:与添加员工用法相同
- 实现方法:
- 在添加员工的Tests中将员工ID存入环境变量
- 查询接口URL直接替换为{{环境变量名}}
4. postman参数化
1)参数化简介
![]()
- 核心价值:实现测试数据与脚本分离,提高测试效率
- 数据格式对比:
- CSV:
- 优点:格式简单
- 缺点:不支持布尔/复杂类型,所有非数值自动转为字符串
- 适用场景:数据量大且结构简单
- JSON:
- 优点:支持所有数据类型,可实现参数测试
- 缺点:文件体积较大
- 适用场景:数据结构复杂或需要参数测试
2)编写数据文件
![]()
- CSV格式要求:
- JSON格式要求:
- 严格遵循JSON语法
- 键值对形式组织数据
- 支持嵌套数据结构
3)导入数据文件到postman
![]()
- 操作步骤:
- 点击用例集名称
- 进入Runner页面
- 选择数据文件
- 预览确认数据无误
- 注意事项:首次导入务必预览,避免数据格式错误
4)读取数据文件数据
![]()
- 两种引用方式:
- 界面引用:{{字段名}}(CSV)或{{键名}}(JSON)
- 代码引用:data.字段名(CSV)或data.键名(JSON)
- 关键区别:代码中必须使用data关键字作为前缀
- 例题:按手机号查询运营商
![]()
- 调试技巧:
- 经验要点:需要反复实践才能熟练掌握参数化调试方法
二、知识小结