51Testing软件测试论坛
标题: postman安装与简要操作 [打印本页]
作者: 测试积点老人 时间: 2018-11-30 15:36
标题: postman安装与简要操作
1、Postman接口测试工具
Postman简介与安装:
Postman是一款功能强大的网页调试与发送网页HTTP请求的Chrome插件。
它提供功能强大的 Web API & HTTP 请求调试。它能够发送任何类型的HTTP 请求 (GET, HEAD, POST, PUT..),附带任何数量的参数+ headers。
Postman功能:
- 主要用于模拟网络请求包
- 快速创建请求
- 回放、管理请求
- 快速设置网络代理
Postman安装:
2、界面
[attach]119726[/attach]
3、Postman简单使用
http://www.bejson.com/ 解析json格式数据的网站
https://developers.douban.com/wiki/?title=book_v2#get_book_search
[attach]119727[/attach]
开始开发--接口测试号申请
appID wx55614004f367f8ca
Appsecret 65515b46dd758dfdb09420bb7db2c67f
用户分组管理--创建分组利用postman发送post请求、参数是json格式
[attach]119728[/attach]
页面访问请求(Post方法):
form-data、x-www-form-urlencoded、raw、binary的区别
1. form-data
就是http请求中的multipart/form-data,它会将表单的数据处理为一条消息,以标签为单元,用分隔符分开。既可以上传键值对,也可以上传文件。当上传的字段是文件时,会有Content-Type来说明文件类型;content-disposition,用来说明字段的一些信息;由于有boundary隔离,所以multipart/form-data既可以上传文件,也可以上传键值对,它采用了键值对的方式,所以可以上传多个文件。
2.x-www-form-urlencoded:
就是application/x-www-from-urlencoded,会将表单内的数据转换为键值对
3.raw
可以上传任意格式的文本,可以上传text、json、xml、html等
Cookies:
Postman v0.8.x以上版本 可以显示浏览器 cookies, 就像它与浏览器共享相同的环境一样。对于本地应用, 你需要启用Interceptor,然后你就可以在响应部分的 Cookies 选项卡中查看响应的 cookies。
Tests:
Tests为执行断言后的测试结果
4、常规使用--断言Tests
测试返回的body包含的内容
- tests["Body matches string"] =responseBody.has("百度搜索");
复制代码测试返回的状态码
- <p style="box-sizing: border-box; outline: 0px; margin-bottom: 16px; line-height: 26px; overflow-x: auto;">tests["Status code is 200"] =responseCode.code === 200;</p><p style="box-sizing: border-box; outline: 0px; margin-bottom: 16px; line-height: 26px; overflow-x: auto;">tests["1+1"] = 1+1 === 2;</p>
复制代码测试返回的状态信息
- tests["Status code name hasstring"] = responseCode.name.has("OK");
复制代码- tests["hello is he"] ="hello".has("he");
复制代码测试响应时间是否低于200ms
- tests["Response time is less than200ms"] = responseTime < 200;
复制代码- 检查响应body中等于指定string--Check if response body is equal to a string
复制代码- tests["Body is correct"] =responseBody === "response_body_string";
复制代码- <p style="box-sizing: border-box; outline: 0px; margin-bottom: 16px; line-height: 26px; overflow-x: auto;">检查Content-Type是否包含在header返回(大小写不敏感)</p><p style="box-sizing: border-box; outline: 0px; margin-bottom: 16px; line-height: 26px; overflow-x: auto;">tests["Content-Type is present"]= postman.getResponseHeader("Content-Type");</p><p style="box-sizing: border-box; outline: 0px; margin-bottom: 16px; line-height: 26px; overflow-x: auto;">检查Content-Type是否包含在header返回(大小写敏感)</p><p style="box-sizing: border-box; outline: 0px; margin-bottom: 16px; line-height: 26px; overflow-x: auto;">tests["Content-Type is present"]= responseHeaders.hasOwnProperty("Content-Type");</p>
复制代码检查成功post的请求
- tests["Successful POST request"]= responseCode.code === 201 || responseCode.code === 202 || responseCode.code=== 200;
复制代码检查JSON某字段值
- <p style="box-sizing: border-box; outline: 0px; margin-bottom: 16px; line-height: 26px; overflow-x: auto;">var jsonData = JSON.parse(responseBody);</p><p style="box-sizing: border-box; outline: 0px; margin-bottom: 16px; line-height: 26px; overflow-x: auto;">tests["Your test name"] =jsonData.expires_in === 7200;</p>
复制代码5、接口持久化
把单个接口保存到文件夹(接口项目)中,再接口项目文件夹下新建文件夹(模块)
6、环境变量:
环境变量:
postman可直接通过切换环境来实现多个环境中的参数切换。常用功能:环境地址切换、全局变量使用。
7、Postman导入导出功能
8、Postman持久化运行
[attach]119729[/attach]
[attach]119730[/attach]
9、postman提取接口返回值
1、变量赋值的方式
[attach]119731[/attach]
- let jsondata = JSON.parse(responseBody) ;
- let access_token = jsondata.access_token ;
- let expires_in = jsondata.expires_in ;
- tests["时效"] =expires_in === 7200 ;
复制代码10、保存到全局变量
- <p style="box-sizing: border-box; outline: 0px; margin-bottom: 16px; line-height: 26px; overflow-x: auto;">var jsondata = JSON.parse(responseBody) ;</p><p style="box-sizing: border-box; outline: 0px; margin-bottom: 16px; line-height: 26px; overflow-x: auto;">postman.setGlobalVariable("tokenid",jsondata.access_token);</p>
复制代码11、接口串行传参
把上一个接口的返回值送给下一个接口作为输入参数
在postman中通过全局变量实现
[attach]119732[/attach]
[attach]119733[/attach]
12、Postman动态传参
在runner里循环发n次请求/做自动化测试时,有些接口不适合写死参数:
1.Postman有以下内建变量,适合一次性使用:
- <p style="box-sizing: border-box; outline: 0px; margin-bottom: 16px; line-height: 26px; overflow-x: auto;"> {{$timestamp}}//当前时间戳</p><p style="box-sizing: border-box; outline: 0px; margin-bottom: 16px; line-height: 26px; overflow-x: auto;"> {{$randomInt}}//0-1000的随机整数</p>
复制代码
2.参数依赖上一个请求的返回:
上个请求的Tests里提取参数存环境变量,这个请求里用{{变量名}}取值
3.参数每次都不同,但之后的断言或别的请求里可能还要用:
在Pre-requestScript里写代码处理,存为环境变量,参数里用{{变量名}}取值
5、Postman流程控制
流程控制只有在collection runner或Newman里才生效
设2个接口的顺序为:接口A-->接口B
如果希望执行顺序为:接口A -> 接口B -> 接口A,又不想复制一份接口A
A接口:
[attach]119734[/attach]
B接口:
[attach]119735[/attach]
失败的测试自动重新运行
6、Postman调试功能(日志)
1.使用 Ctrl+Alt+c 可以打开Postman的控制台,可以查看请求和响应(只适用于客户端,不适用于Chrome 插件)
[attach]119736[/attach]
2.用console.log()打印,到控制台看
- console.log(jsondata.access_token);
复制代码3.tests['这里拼出你想看的字符串']= true在界面/报告看断言
- tests[jsondata.access_token] = false;
复制代码7、定义公共函数
常用公共函数:
1).判断是否超时(assertNotTimeout):
- varhasResponse=postman.getResponseHeader('Content-Type')?true:false;if(!hasResponse) tests['服务端在超时前没返回任何数据,请检查相关服务、网络或反向代理设置(以下跳过其他断言)']=false;
复制代码2).未超时,显示发出的请求参数(logParams):
- if(hasResponse) tests[`[INFO] 请求参数(超时没返回时不解析):${JSON.stringify(request.data)}`]=true;
复制代码3).未超时,解析返回的JSON对象(getResponseJson):
- try{if(hasResponse) var json=JSON.parse(responseBody);}catch(err){tests['服务端没返回合法的JSON格式,请检查相关服务、网络或反向代理设置(以下跳过其他断言)']=false; tests[`[INFO] 返回:${responseBody}`]=true;console.error(err);}
复制代码4).返回元素的类型(assertType):
- var assertType=(name,value,type)=>{letisType=(type==='array')? Array.isArray(value):typeof value===type;tests[`${name}为${type}(实际值:${value})`]=isType;};
复制代码5).返回元素是否与预期值一致(assertEqual):
- var assertEqual=(name,actual,expected)=>{tests[`${name}等于${expected}(实际值:${actual})`]=actual===expected;};
复制代码6).返回元素是否与预期值不一致(assertNotEqual):
- <p style="box-sizing: border-box; outline: 0px; margin-bottom: 16px; line-height: 26px; overflow-x: auto;">varassertNotEqual=(name,actual,expected)=>{tests[`${name}不等于${expected}(实际值:${actual})`]=actual!==expected;};</p>
复制代码
欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) |
Powered by Discuz! X3.2 |