Postman断言
Postman 断言简介
- 让Postman 工具代替人工 自动判断 预期结果和实际结果是否一致
- 断言代码 书写在Tests标签页中。查看断言结果 TestResults 标签页
Poatman常用断言
1.断言响应状态码
Status code:Code is 200
//断言响应状态码为 200
pm.test("Status code is 200",function(){
pm.response.to.hava.status(200);
});
pm:postman的实例
test() postman实例的测试方法。这个方法 有2个参数。
参数1:"Status code is 200"。这个参数可以任意修改,不影响断言。
作用:在断言结束后,显示给用户,断言结果的提示文字。
参数2:是一个 匿名函数 调用。
pm.response.to.have.status(200);的意思是:
postman 的响应结果中,应该有 响应状态码 200.---这里的200是预期结果。
2.断言包含某字符串
Response body:Contains string
pm.test("Body matches string", function () {
pm.expect(pm.response.text()).to.include("string_you_want_to_search");
});
pm:postman的实例
test() postman实例的测试方法。这个方法有2个参数
参1:"Body matches string"。这个参数可以任意修改,不影响断言。
作用:在断言结束后,显示给用户,断言结果的提示文字。
参2:是一个匿名 函数 调用
pm.expect(pm.response.text()).to.include("string_you_want_to_search");意思是:
postman 期望 响应文本中,应该包含”你想搜索的字符串“(预期结果)
3.断言JSON数据
Response body:JSON value Check
pm.test("Your test name", function () {
var jsonData = pm.response.json();
pm.expect(jsonData.value).to.eql(100);
});
pm:postman的实例。
test() postman实例的测试方法。这个方法有2个参数
参1: "Your test name"。这个参数可以任意修改,不影响 断言。
作用:在断言结束后,显示给用户,断言结果的提示文字
参2:是一个匿名函数 调用
var jsonData = pm .response.json();将整个json 响应体 赋值 到变量jsonData上。
pm.expect(jsonData.value).to.eql(100);postman期望json 结果中 指定key的值为xxx
value的取值:success、code、message
var jsonData =pm.response.json()
Postman断言工作原理
Postman关联
简介
当接口和接口之间,有依赖关系时,需要借助postman 关联技术,来实现。
如:登录接口返回的令牌数据,被添加员工接口依赖。
添加员工 返回员工id,被查询员工接口依赖。
实现步骤
假定:接口B 产生的数据,被接口A依赖。
1.发送接口B请求,获取响应数据。
2.将 响应数据,放入公共容器(全局变量、环境变量)中
3.接口A从 公共容器中,提取数据,发送请求。
核心代码
//1.获取 响应数据,转为json格式,保存到变量jsonData中。
var jsonData =pm.response.json()
//2.1 使用全局变量做容器
pm.globals.set("群居变量名",全局变量值)
//2.2使用环境变量做容器
pm.environment.set("环境变量名",环境变量值)
//3. 在postman 界面中(URL、请求头Headers、请求体body)提取全局 环境变量数据。
{{全局变量}}/{{环境变量}}
创建环境
- 全局变量:在整个postman中都可以使用的变量,不需要单独创建环境。
- 环境变量:在特定的环境下,才能使用的变量。需要给此变量创建单独的环境。
案例1
1、使用postman关联,实现下面案例
从获取天气接口,http://www.weather.com.cn/data/sk/101010100.html
获取返回结果中的城市名字
调用百度搜索接口:http://www.baidu.com/S?wd=北京,把获取到的城市名称,如:北京,作为请求参数。
思路:
1.发送获取天气请求,获取响应结果。
2.从响应结果中,拿到城市名,存入全局变量。
3.百度搜索接口从 全局变量中,取城市名,发送搜索请求。
Test代码:
//1.获取响应结果
var jsonData =pm.response.json()
//2.从响应结果中 提取城市名
var city=jsonData.weatherinfo.city
//3.将城市名保存到 全局变量
pm.globals.set("glb_city",city)
案例2
使用postman关联技术,实现添加员工接口。
登录成功,返回的"令牌"被添加 员工 接口依赖。
思路:
- 发送登录请求(必须登录成功),获取响应结果。
- 从json响应结果中,提取data值。拼接上“Bearer”前缀。
- 注意:Bearer单词不能拼错,首字母必须大写,只有一个空格
- 将拼接无误的令牌,存入环境变量,从“眼睛”图标查看。
- 添加员工接口,从环境变量中,提取令牌。设置到请求头中,作为Authorization的值。
- 填写 添加员工 接口 其他信息(post、URL、请求体),发送请求
员工查询
Postman参数化
简介
- 什么是参数化:
- 将测试数据,组织到数据文件中,通过脚本的反复迭代,使用不同的数据,达到测试不同用例的目标。
- 应用场景:
- 一般在测试同一个接口的不同 测试点时,只有测试数据不同。考虑使用参数化。
数据文件简介
-
CSV:
- 优点:数据组织格式简单
- 缺点:
- 不能测试bool类型。因为postman 读取csv后,将所有非数值类型数据,自动添加“”变为字符串。
- 不能存储复杂数据类型(元组、列表、字典)
- 不能实现参数测试。
- 应用场景:数据量较大,数据组织格式简单。
-
JSON:
- 优点:
- 可以使用bool类型
- 能使用复杂数据 类型
- 可以实现 参数测试
- 缺点:相同数据量,json文件要远大于csv文件。
- 应用场景:数据量较少,数据组织格式复杂。需要进行参数 测试!
- 优点:
编写数据文件
CSV文件
JSON文件
导入数据文件到Postman
读取数据文件数据
理论
根据使用位置不同,有有种方法。
- 第一种:请求参数(请求行、请求头、请求体)中,使用数据 文件中的数据
- CSV文件:{{字段名}};JSON文件:{{键名}}
- 第二种:代码(Tests)种,使用数据文件种的数据
- 使用postman内置的关键字 data,索引字段名或键名
- csv文件:data.字段名;json文件:data.键名
案例
需求:批量查询手机号 所属运营商,校验运营商数据正确性
接口:https://cx.shouji.360.cn/phonearea.php?number=13012345678
测试数据:
手机号:13012345678 运营商:联通
手机号:13712345678 运营商:移动
手机号:18912345678 运营商:电信