基于Postman V7.0.7介绍
(接 测试小工-Postman基本使用1 介绍)
三、Runner(批量测试)
1、两个入口
顶部菜单的Runner;Collections-具体项目-更多-Run。
2、基本设置
1)Iterations:迭代,可以设置执行次数。
2)Dealy:间隔时间,用例与用例间的间隔时间。
3)Data:外部数据加载,即用例的参数化,可以与Iterations结合使用,实现参数化,也就是数据驱动。
ps:执行方式是一个请求结束后执行下一个请求。不是并发执行。
四、断言(Tests&Test Results)
一个完整的接口测试,包括:请求 -> 获取响应正文 -> 断言。
1、断言入口
请求响应器下的Tests。右侧SNIPPETS(片段)有基本语句,修改参数即可使用。
2、示例
断言场景如下:
1)判断HTTP返回状态码为200——对应SNIPPETS中的 Status code:Code is 200
2)判断响应正文中是否包含:"statusCode":200——Response body:Contains string
3)解析响应正文,并判断statusCode的值是200,message的值是”Success”——“Response body:JSON value check
详解:
第一步,点击SNIPPETS中“Status code:Code is 200”,自动生成”判断HTTP返回状态码为200“的代码:
pm.test("Status code is 200", function () {
pm.response.to.have.status(200);
});
其中,pm.test 是一个内置对象,"Status code is 200"为函数名称,可自定义;function(){}为具体函数。
这句代码意思是:名称为"Status code is 200"的断言中,判断responseCode对象的HTTP状态码是否为200。
第二步,点击SNIPPETS中“Response body:Contains string”:
pm.test("Body matches string", function () {
pm.expect(pm.response.text()).to.include("string_you_want_to_search");
});
同上,”Body matches string“可自定义,string_you_want_to_search同字面意思,改成需要搜索的字段。
则 判断响应正文中是否包含:"statusCode":200 的代码为:
pm.test("Body matches string", function () {
pm.expect(pm.response.text()).to.include('"statusCode":200');
});
注意:字符串中含双引号时需要用单引号包含,有单引号时要用双引导包含。
第三步,解析响应正文,就是要解析Json串。所以点击SNIPPETS中“Response body:JSON value check”:
pm.test("Your test name", function () {
var jsonData = pm.response.json();
pm.expect(jsonData.value).to.eql(100);
});
这是一个判断JSON语句,其中"Your test name"、jsonData.value、100 均为自定义。
则判断statusCode的值是200的代码为:
pm.test("code200", function () {
var jsonData = pm.response.json();
pm.expect(jsonData.statusCode).to.eql(200);
});
判断message的值是”Success”的代码为:
pm.test("messageok", function () {
var jsonData = pm.response.json();
pm.expect(jsonData.message).to.eql("Success");
});
综上,应有4个断言,则有对应的4个结果。
五、Poatman Console调试窗口
该窗口可以看到请求的详细信息,并且在脚本中console打印的日志也会打印到这。
入口:快捷键Alt+Ctrl+C;顶部菜单-View-Show Postnam Console
六、脚本录制
1、创建测试集
2、设置Postman代理
顶部菜单-Capture API requests with Postman,设置端口号(默认值为5555)、选择输出位置。
3、设置PC代理
可通过Chrome-设置-高级设置-打开代理设置-局域网(LAN)设置-代理服务器:
地址:localhost
host:5555(在Poatman中设置的端口号)
4、打开浏览器,访问接口,操作完成后在之前选择的保存位置有对应的request。
5、导出脚本
测试集-更多-导出-Collection v2.1(默认文件格式)-Export
ps:不创建测试集的话,抓到的请求就会在History中显示。
七、关联
1、在配置的“正式”environment中,输入请求(ps:该请求返回的结果一定有JSON格式的)
2、在Tests输入:
var jsonData = JSON.parse(responseBody);
postman.setEnvironmentVariable("msg", jsonData.msg);
获取响应的数据中 msg 的值(jsonData.msg),然后赋值给字符“msg” 如: 响应数据是 "msg": "Custom error message notification"
在获取关联参数的时候可以设置一个environment,把获取的值放进去,给下个请求调用。
如果没有设置environment,则获取的参数不会被保存。
注意点:这里的脚本要看响应的返回形式来修改,如:
var jsonData = JSON.parse(responseBody);
postman.setEnvironmentVariable("uid", jsonData.result.uid);
这里响应返回的格式里面是 result数组下的uid,所以获取uid脚本是 jsonData.result.uid