1.postman基础用法
1)请求中常见的数据传递格式
数据类型 |
样例数据 |
请求方式 |
请求头(Content-Type) |
字符串 |
URL? username=huluwa&pass=123 |
GET |
/ |
表单 |
见下图 |
POST |
application/x-www-form- urlencoded |
json |
{ "username":"huluwa", "pass":"123" } |
POST |
application/json |
form表单数据示意图:
2.postman高级用法
2.1)用例管理
实现步骤:
1.创建集合---项目(如IHRM、tpshop)
2.创建文件夹---模块(如:登录、员工管理)
创建请求---测试用例(如:登录成功)
2.2)Postman的断言
使用JavaScript语言编写的,写在Postman的【Tests】 标签中
【Tests】中的脚本在发送请求之后执行,它会把断言的结果(PASS/FAIL)最终在【TestResults】 标签页中
Postman的常用断言
断言响应状态码是否为200(Status code is 200)
断言响应体JSON数据校验(Response body:JSON value check)
断言响应体是否包含指定字符串(Response body: Contains string)
断言响应体是否等于指定字符串(Response body:Is equal to a string)
断言响应头是否包含指定的头信息(Response headers: Content-Type header check)
2.3)断言响应状态码
样例代码:
pm.test("Status code is 200", function () { pm.response.to.have.status(200);});
说明:
pm.test是postman内置对象pm对外提供的一种名称为test的方法,他的功能是使用pm.test来编写测试脚 本时,即使方法内部处理内容出现错误也不会影响后续自动化脚本的运行。
案例:
1.请求IHRM项目的登录接口,请求数据({"mobile":"13800000002","password":"123456"})
2.登录接口地址URL:http://ihrm-test.itheima.net/api/sys/login
3.请设置断言自动判定服务器响应状态码为200
2.4)断言JSON数据(重点)
示例代码:
pm.test("Your test name", function () {
var jsonData = pm.response.json();
pm.expect(jsonData.value).to.eql(100);
});
说明:var是用来声明javascript的变量,上面的代码等价于下面的代码。
pm.test("Your test name", function () {
pm.expect(pm.response.json().value).to.eql(100);
});
案例:
1.请求IHRM项目的登录接口,请求数据({"mobile":"13800000002","password":"123456"})
2.登录接口地址URL:http://ihrm-test.itheima.net/api/sys/login
3.请设置断言自动判定服务器响应体数据中success=true,code=10000,message=操作成功!
排错说明:
检查断言代码片段是否选错了
检查断言代码是否设置错了 预期结果或者是判断实际结果的字段选择错误
先点击发送,基于响应中的body数据做初步预判
检查请求相关参数(请求方式、请求头、请求体)
2.5)断言包含指定的字符串内容
样例代码:
pm.test("Body matches string", function ()
{ pm.expect(pm.response.text()).to.include("string_you_want_to_search");
});
案例:
1.请求IHRM项目的登录接口,请求数据({"mobile":"13800000002","password":"123456"})
2.登录接口地址URL:http://ihrm-test.itheima.net/api/sys/login
3.请设置断言自动判定服务器响应体数据中包含【操作成功】
2.6)断言等于指定的字符串
样例代码:
pm.test("Body is correct", function ()
{ pm.response.to.have.body("response_body_string");
});
案例:
1.请求IHRM项目的登录接口,请求数据({"mobile":"13800000002","password":"123456"})
2.登录接口地址URL:http://ihrm-test.itheima.net/api/sys/login
3.请设置断言自动判定服务器响应体数据等于【操作成功】
3.环境变量与全局变量
3.1)概念
全局变量:作用范围是针对postman下面所有测试集均生效
环境变量:只对选择了对应环境的测试集生效(如:选择了测试环境的测试集IHRM0720) 开发环境、测试环境、生产/线上环境一套环境中变量不能重复、但是可以定义多个不重复的变量
3.2)设置变量
a:全局变量
代码设置 // 设置全局变量 pm.globals.set("var_name", "value");
手动设置
b:环境变量
代码设置 // 设置环境变量 pm.enviroment.set("var_name", "value");
手动设置
3.3)获取变量值
a:全局变量
代码中获取 var_value= pm.globals.get("var_name");
请求参数中获取:{{var_name}}
b:环境变量
代码中获取 var_value= pm.enviroment.get("var_name");
请求参数中获取:{{var_name}}
pm.environment.get("variable_key");
pm.globals.get("variable_key");
// 获取环境变量的值 mobile2和password2
var mobile = pm.environment.get("mobile2");
var password = pm.environment.get("password2");
console.log("测试环境中的mobile是:" + mobile)
console.log("测试环境中的password是:" + password)
4.请求前置脚本
1)定义:请求前置脚本就是在“Pre-request Script”标签中所编写的脚本,是在请求发送之前要执行的代码片段。
应用场景:
请求参数中包含一个随机数或者时间戳
请求之前需要对请求参数做进一步处理(如:对敏感参数进行加密)
5.关联
1)如何实现?
要获取某个请求的响应结果数据,可以通过在‘Tests’标签页中编写JavaScript脚本来实现
// 获取JSON格式的响应数据
var jsonData = pm.response.json();
多个请求之间可以使用全局变量或环境变量来传递数据
// 把数据保存到全局变量中
pm.globals.set("city", city);
获取某个全局变量的值:{{var_name}}
6.批量执行测试用例
操作步骤
1).点击测试集中的“Run”按钮,批量运行测试用例
2).弹出Collection Runner窗口,点击运行按钮
3).查看测试结果如上图
7.读取外部文件实现参数化
应用场景: 针对于某个接口,如果有大量的测试数据需要批量验证,可以把测试数据保存到数据文件中,通过参数化的方式来实现。
案例:
需求:批量查询手机号归属地和所属运营商信息,并校验运营商数据是否正确
接口地址: http://cx.shouji.360.cn/phonearea.php?number=13012345678
部分测试数据:
定义数据文件
csv格式:
phone,sp
13012345678,联通
13800001111,移动
18966778899,电信
Json格式:
[
{"phone":"13041092162", "sp":"联通"},
{"phone":"13820003536", "sp":"移动"},
{"phone":"18911236688", "sp":"电信"}
]
实现步骤如上
8.newman
Newman是一款基于nodejs开发的可以运行Postman脚本的工具,并可以生成测试报告
使用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:用来指定测试数据文件的路径
-r html:用来指定生成的数据结果的类型,如json、html等
--reporter-html-export source:指定html报告生成的路径;如果不设置该参数,则会在当前目录下生成一个名字为newman的文件夹