postman基本使用
正文:
- postman测试报告插件newman
- 管理测试用例Collections
- postman断言
- 全局变量和环境变量
- postman的关联
- postman生成测试报告
- postman参数化
====================================================================================
安装postman测试报告插件newman
1,先安装Node.js:https://nodejs.cn/download/
检查node.js是否安装成功:npm -v
2,安装newman:
npm install -g newman
检查是否安装成功
newman -v
3,安装newman插件newman-reporter-html
安装命令:
npm install -g newman-reporter-html
postman基本使用
https://blog.csdn.net/qq_41099091/article/details/107319193
====================================================================================
管理测试用例Collections
导出测试用例集
使用默认方式导出即可
导入测试用例集
====================================================================================
postman断言
断言代码写在Tests的标签中,可以进行多个断言
- 断言响应状态码
- 断言响应体是否包含某个字符串
- 断言响应体是否等于某个字符串
- 断言JSON数据
- 断言响应头
1,断言响应状态码
Status code: Code is 200
(1)在Tests标签中,选中Status Code:code is 200,生成相应代码
(2)适当调整test()方法参数1,和匿名函数中的预期结果
(3)点击send按钮,发生请求,执行断言代码
(4)查看断言结果
JS代码分析
//断言响应状态码 是否为 200 pm.test("Status code is 200", function () { pm.response.to.have.status(200); }); pm:代表postman的一个实例 test():是pm实例的一个方法,有两个参数: 参数1:在断言成功后,给出的文字提示,可以修改,"Status code is 200" 参数2:匿名函数 pm.response.to.have.status(200); //意思:postman的响应结果中应该包含状态码200
断言结果
2,断言响应体是否包含某个字符串
Response body: Contains string
pm.test("Body matches string", function () { pm.expect(pm.response.text()).to.include("string_you_want_to_search"); });
3,断言响应体是否等于某个字符串
Response body: ls equal to a string
pm.test("Body is correct", function () { pm.response.to.have.body("response_body_string"); });
4,断言JSON数据
Response body: JSON value check
//断言json的响应结果 pm.test("Your test name", function () { var jsonData = pm.response.json(); pm.expect(jsonData.value).to.eql(100); }); var jsonData = pm.response.json(); //var jsonData 用 js 语法定义的一个变量,jsonData就是变量名 //pm.response.json();代表响应的json结果 //举例:response.json(); /* { "success":true, "code":10000, "message":"操作成功!", "data":"95c78d75-721c-40fb-b2d5-742fea42cbd5" } */ pm.expect(jsonData.value).to.eql(100); //pm 预期 json结果 key 对应的值 等于 xxx /*举例: jsonData.value 的 value 可以取: success、code、message、data */
5,断言响应头
Response headers: Content-Type header check
//断言响应头 pm.test("Content-Type is present", function () { pm.response.to.have.header("Content-Type"); }); pm.response.to.have.header("Content-Type") //pm 的响应头 中包含 Content-Type //示例:可以在header中,添加响应头中的key对应的value判定。用,隔分。 //断言响应头 pm.test("Content-Type is present", function () { pm.response.to.have.header("Content-Type","application/json;charset=UTF-8"); });
postman断言工作原理
====================================================================================
全局变量和环境变量
设置变量
全局变量
- 手动设置
- 代码设置
pm.globals.set("varname", value);
环境变量
- 手动设置
- 代码设置
pm.environment.set("var_name", value);
获取环境变量
全局变量
- 请求参数中获取:{{var_name}}
- 代码中获取:var value = pm.globals.get("var_name");
环境变量
- 请求参数中获取:{{var_name}}
- 代码中获取:var value = pm.environment.get("var_name");
postman请求前置脚本
实现步骤:
1,在Pre-request Script标签页中,添加代码,拿到时间戳,写入全局变量
2,点击Send 按钮,发送请求,请求发送前执行上述代码,写入全局变量
3,查看写入的变量
4,在请求参数(界面:Params\Headers),使用全局变量名。{{全局变量名}}
5,在postman的控制台,查看发送的http请求。
设置时间戳
使用时间戳
打开postman控制台可以检查发送请求是否带了时间戳
工作原理图
====================================================================================
postman的关联
应用于多个http请求之间,有数据关联、或依赖关系时。
实现步骤:
A接口 依赖 B接口 的数据
- 向B接口发送http请求,获取数据
- 将数据设置 至 全局变量(环境变量)中
- A 接口获取全局变量(环境变量)中 数据值,进行使用
案例:
请求 获取天气接口,提取响应结果中的 城市,将城市给百度搜索接口使用
获取天气接口:http://www.weather.com.cn/data/sk/101010100.htm!
实现步骤:
1,创建用例集,分别创建查询天气请求和百度搜索请求
2,在查询天气请求Tests中,编写代码获取城市名,写入全局变量。
3,点击Send按钮,发送请求,查看设置的全局变量
4,修改百度搜索请求,使用全局变量,按城市名进行搜索。
====================================================================================
postman生成测试报告
批量执行测试用例
第一步
第二步
postman生成测试报告
1,批量执行测试用例(确认无误)
2,导出测试用例集(得到xxx.json文件)
3,使用newman命令,运行导出的测试集脚本,打开cmd输入:
newman run 测试脚本文件 -e 环境变量文件 -d 测试数据文件 -r html --reporter-html-export report.html eg: newman run demo.postman_collection.json -r html newman run demo.postman_collection.json -r html --reporter-html-export report.html
命令说明
- run xxx.json : 表示要执行的postman脚本,即导出的测试集数据
- -e source : 用来指定环境变量文件的路径
- -d source : 用来指定测试数据文件的路径
====================================================================================
postman参数化
导入数据文件
- csv文件
- json文件
csv文件
优点:
数据组织形式简单,适用于大量数据场合
缺点:
1,不支持bool类型数据。(数据被postman读入后,自动添加""包裹boo值,如”True“)
2,不支持多参、少参、无参、错误参数的接口测试
3,不支持复杂数据类型。(如嵌套字典、列表等)
json文件
优点:
1,支持bool类型
2,支持多参、少参、无参、错误参数
3,支持复杂数据类型
缺点:
对于相同的数据量,json数据文件大小远大于csv文件
导入数据文件
csv文件
1,创建xxx.csv文件
2,将数据写入到csv文件中。
- 第一行写入的是数据对应的”字段名“
- 从第二行向后依次是对应的数值,数据间用英文逗号隔分
3,在Postman中,选中使用数据文件的用例集,导入数据文件
- 点击用例集名称,使用Run按钮,进入“Runner”页面。
- 使用“Select File”按钮选择 xxx.csv文件
- 点击预览按钮,校验数据文件是否正确
json文件
1,创建xxx.json数据文件
2,在数据文件中,按json语法写入json数据。postman要求,json格式的数据文件,数据内容的最外层,必须是[]。内部所有的数据用 [] 存储。(建议使用json.cn在线网站编写)
3,在Postman中,选中使用数据文件的用例集,导入数据文件
- 点击用例集名称,使用Run按钮,进入“Runner”页面。
- 使用“Select File”按钮选择 xxx.json文件
- 点击预览按钮,校验数据文件是否正确
读取数据文件数据
根据使用数据 位置 不同,有两种获取数据文件中数据的方法
第一种:请求参数(请求行Params、请求头Headers、请求体Body) 中,使用 数据文件中 的数据
使用{{}}包裹csv文件字段名或json文件中的key
如:{{username}}或{{password}}
第二种:代码 (断言Tests、请求前置脚本Pre-request) 中,使用 数据文件中 的数据
需要借助 postman 提供的 关键 data 点 csv 文件的字段名或son文件的 key
如: data.password 或 data.username
接口:http://cx.shouji.360.cn/phonearea.php?number=13012345678
1,测试单个接口,工作中 参数 和响应体 数据对应关系。
2,写好数据文件,按csv或json对应的语法格式组织数据
3,替换 上述用例中的 两处:
- 归属地:在代码中,用data.字段名 替换
- 手机号:在查询参数中。用{{字段名}}替换
4,选择使用数据文件的用例集,进入 Runner 页面。导入数据文件。运行
5,如果有异常,借助postman控制台,查看
使用json文件
生成测试报告
步骤:
1,批量执行测试用例 (借助数据文件)
2,导出 测试用例集(建议与 数据文件放在一起)
3,执行生成测试报告的命令,注意文件路径
添加环境
打开小眼睛查看
注意保存用例Ctrl+s(不要有小红点)
学习自黑马测试