postman安装与简要操作
1、Postman接口测试工具Postman简介与安装:
Postman是一款功能强大的网页调试与发送网页HTTP请求的Chrome插件。
它提供功能强大的 Web API & HTTP 请求调试。它能够发送任何类型的HTTP 请求 (GET, HEAD, POST, PUT..),附带任何数量的参数+ headers。
Postman功能:
[*]主要用于模拟网络请求包
[*]快速创建请求
[*]回放、管理请求
[*]快速设置网络代理
Postman安装:
[*]1.在chrome应用商店搜索,应用商店地址:https://chrome.google.com/webstore/search/postman?t=http://webstore.google.com
[*]翻墙下载直接添加成google浏览器插件即可
[*]2.客户端安装
[*]https://www.getpostman.com/apps
[*]建议选择Mac/Windows app,比起Chrome app,下载不需要翻墙,功能更强大
2、界面
3、Postman简单使用http://www.bejson.com/解析json格式数据的网站https://developers.douban.com/wiki/?title=book_v2#get_book_search
开始开发--接口测试号申请appID wx55614004f367f8caAppsecret 65515b46dd758dfdb09420bb7db2c67f用户分组管理--创建分组利用postman发送post请求、参数是json格式页面访问请求(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");测试响应时间是否低于200mstests["Response time is less than200ms"] = responseTime < 200;检查响应body中等于指定string--Check if response body is equal to a stringtests["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持久化运行9、postman提取接口返回值1、变量赋值的方式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中通过全局变量实现12、Postman动态传参在runner里循环发n次请求/做自动化测试时,有些接口不适合写死参数:1.Postman有以下内建变量,适合一次性使用: {{$guid}}//生成GUID<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,又不想复制一份接口AA接口:B接口:失败的测试自动重新运行6、Postman调试功能(日志)1.使用Ctrl+Alt+c 可以打开Postman的控制台,可以查看请求和响应(只适用于客户端,不适用于Chrome 插件)2.用console.log()打印,到控制台看console.log(jsondata.access_token);3.tests['这里拼出你想看的字符串']= true在界面/报告看断言tests = false;7、定义公共函数常用公共函数:1).判断是否超时(assertNotTimeout):varhasResponse=postman.getResponseHeader('Content-Type')?true:false;if(!hasResponse) tests['服务端在超时前没返回任何数据,请检查相关服务、网络或反向代理设置(以下跳过其他断言)']=false;2).未超时,显示发出的请求参数(logParams):if(hasResponse) tests[` 请求参数(超时没返回时不解析):${JSON.stringify(request.data)}`]=true;3).未超时,解析返回的JSON对象(getResponseJson):try{if(hasResponse) var json=JSON.parse(responseBody);}catch(err){tests['服务端没返回合法的JSON格式,请检查相关服务、网络或反向代理设置(以下跳过其他断言)']=false; tests[` 返回:${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>
页:
[1]