版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/q386815991/article/details/79569409
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
https://mp.weixin.qq.com/wiki/home/
开始开发--接口测试号申请
appID wx55614004f367f8ca
Appsecret 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等
4.binary
相当于Content-Type:application/octet-stream,从字面意思得知,只可以上传二进制数据,通常用来上传文件,由于没有键值,所以,一次只能上传一个文件。
multipart/form-data与x-www-form-urlencoded区别
multipart/form-data:既可以上传文件等二进制数据,也可以上传表单键值对,只是最后会转化为一条信息;
x-www-form-urlencoded:只能上传键值对,并且键值对都是间隔分开的。
Get方法和Post方法的区别
1. get是从服务器上获取数据,post是向服务器传送数据。
2.get安全性非常低,post安全性较高。但是执行效率却比Post方法好。
3.POST的安全性要比GET的安全性高。注意:这里所说的安全性和上面 GET提到的“安全”不是同个概念。上面“安全”的含义仅仅是不作数据修改,而这里安全的含义是真正的Security的含义,比如:通过GET提交数据,用户名和密码将明文出现在URL上,因为(1)登录页面有可能被浏览器缓存,(2)其他人查看浏览器的历史纪录,那么别人就可以拿到你的账号和密码了,除此之外,使用GET提交数据还可能会造成Cross-site request forgery攻击。
总结一下,Get是向服务器发索取数据的一种请求,而Post是向服务器提交数据的一种请求,在FORM(表单)中,Method默认为"GET",实质上,GET和POST只是发送机制不同,并不是一个取一个发!
Postman设置发送请求头
1、查看响应结果
Body 有三种视图:Prettry, Raw, 和 Preview。
Prettry 模式将 JSON 或 XML 响应格式化,使他们更容易被查看。Pretty 模式中的链接被高亮显示,点击他们可以在 Postman 中加载一个使用该 URL 的 GET 请求。
Raw 视图只是一个显示了响应的 body 的大文本区域, 它可以帮助你判断你的响应是不是被压缩的。
Preview 选项卡在内联沙箱框架中呈现响应。一些Web 框架默认返回 HTML 错误,这时, Preview 模式就非常有用了。由于内联沙箱框架的限制,JAVAScript 和图像在内联框架中是被禁用的。如果你的 API 端点返回一个图像, Postman 会自动检测并呈现它。对于二进制响应类型,你应该选择“Send and download”,这将让你保存响应到你的硬盘上,之后你就可以用适当的查看器来查看它。这样你就可以灵活地测试音频、PDF、zip 文件或 API 给你的任何文件。
Headers:
在 Header 选项卡中,headers 显示为 key/value 对。光标悬停 header 名时则会显示根据 HTTP 规范对 header 的描述。如果你正在发送一个 HEAD 请求, Postman 会默认显示 Headers 选项卡。
Cookies
Postman v0.8.x以上版本 可以显示浏览器 cookies, 就像它与浏览器共享相同的环境一样。对于本地应用, 你需要启用Interceptor,然后你就可以在响应部分的 Cookies 选项卡中查看响应的 cookies。
Tests
Tests为执行断言后的测试结果
2、常规使用--断言Tests
测试返回的body包含的内容
tests["Body matches string"] =responseBody.has("百度搜索");
测试返回的状态码
tests["Status code is 200"] =responseCode.code === 200;
tests["1+1"] = 1+1 === 2;
测试返回的状态信息
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";
检查Content-Type是否包含在header返回(大小写不敏感)
tests["Content-Type is present"]= postman.getResponseHeader("Content-Type");
检查Content-Type是否包含在header返回(大小写敏感)
tests["Content-Type is present"]= responseHeaders.hasOwnProperty("Content-Type");
检查成功post的请求
tests["Successful POST request"]= responseCode.code === 201 || responseCode.code === 202 || responseCode.code=== 200;
检查JSON某字段值
var jsonData = JSON.parse(responseBody);
tests["Your test name"] =jsonData.expires_in === 7200;
3、接口持久化
把单个接口保存到文件夹(接口项目)中,再接口项目文件夹下新建文件夹(模块)
4、环境变量:
环境变量:
postman可直接通过切换环境来实现多个环境中的参数切换。常用功能:环境地址切换、全局变量使用。
5、Postman导入导出功能
6、Postman持久化运行
7、postman提取接口返回值
1、变量赋值的方式
let jsondata = JSON.parse(responseBody) ;
let access_token = jsondata.access_token ;
let expires_in = jsondata.expires_in ;
tests["时效"] =expires_in === 7200 ;
2、保存到全局变量
var jsondata = JSON.parse(responseBody) ;
postman.setGlobalVariable("tokenid",jsondata.access_token);
3、接口串行传参
把上一个接口的返回值送给下一个接口作为输入参数
在postman中通过全局变量实现
4、Postman动态传参
在runner里循环发n次请求/做自动化测试时,有些接口不适合写死参数:
1.Postman有以下内建变量,适合一次性使用:
{{$guid}}//生成GUID
{{$timestamp}}//当前时间戳
{{$randomInt}}//0-1000的随机整数
2.参数依赖上一个请求的返回:
上个请求的Tests里提取参数存环境变量,这个请求里用{{变量名}}取值
3.参数每次都不同,但之后的断言或别的请求里可能还要用:
在Pre-requestScript里写代码处理,存为环境变量,参数里用{{变量名}}取值
5、Postman流程控制
流程控制只有在collection runner或Newman里才生效
设2个接口的顺序为:接口A-->接口B
如果希望执行顺序为:接口A -> 接口B -> 接口A,又不想复制一份接口A
A接口:
B接口:
失败的测试自动重新运行
6、Postman调试功能(日志)
1.使用 Ctrl+Alt+c 可以打开Postman的控制台,可以查看请求和响应(只适用于客户端,不适用于Chrome 插件)
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;};
js的数据类型:
typeof 2 输出 number
typeof null 输出 object
typeof {} 输出 object
typeof [] 输出 object
typeof (function(){}) 输出 function
typeof undefined 输出 undefined
typeof '222' 输出 string
typeof true 输出 boolean
5).返回元素是否与预期值一致(assertEqual):
var assertEqual=(name,actual,expected)=>{tests[`${name}等于${expected}(实际值:${actual})`]=actual===expected;};
6).返回元素是否与预期值不一致(assertNotEqual):
varassertNotEqual=(name,actual,expected)=>{tests[`${name}不等于${expected}(实际值:${actual})`]=actual!==expected;};
————————————————
版权声明:本文为CSDN博主「快乐风男灬」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/q386815991/article/details/79569409