Postman 知识汇总
1.Postman简介:
Postman 是一款强大的接口测试工具,postman为用户提供强大的 Web API & HTTP 请求调试功能。postman能够发送任何类型的HTTP 请求( get、post、put、patch、delete )
2.接口测试流程:
3.接口测试执行
鉴权码:鉴权你是否有访问此接口的权限的一个字符串码。 获取鉴权码的方式: 1.有一个专门的获取token鉴权码的接口。 2.登录之后自动生成token鉴权码。
A. 功能的请求页签各模块详解: Params - 在这里将编写请求所需的参数(多用于get请求传参),比如Key - Value。 Authorization - 为了访问api,需要适当的授权、鉴权(验证是否拥有从服务器访问所需数据的权限)。它可以是Username、Password、Token等形式。 Headers - 请求头信息 Body - 请求体信息,一般在POST中才会使用到
- none - 表示无参数
- form-data - 表示键值对( key - value)格式输入,也可以进行文件上传(主要特点),可以设置 content
-type(Http请求内容类型,如utf-8) - x-www-from-urlencoded - 表示键值对格式输入, 不支持文件传输,不可以设置 content -type。
- raw - 表示传各种其他类型的参数,如 text, javascript, json, html, application/xml
- binary - 表示只可以上传二进制数据,通常用来上传文件,由于没有键值,所以,一次只能上传一个文件
Pre-request Script - 请求之前 先执行js脚本,使用设置环境的预请求脚本来确保在正确的环境中运行测试。 Tests - 这些脚本是在请求期间执行的。对于测试非常重要,因为它设置检查点(断言)来验证响应状态是否正常、检索的数据是否符合预期以及其他测试。 Settings - 最新版本的有设置,一般用不到。
B. 响应的功能页签: Body - 查看响应内容模块,有三种查看方式: pretty, raw, preview
-
pretty - 以漂亮的模式去格式化响应的JSON或者XML,方便更好的去查看。在这个模式中响应数据内容中的链接是高亮显示并且可以点击去发送请求的。还可以点击下拉选项选择以什么方式去格式化响应的数据 -
Raw - 仅仅是响应体的一个大文本,可以告诉你响应体是否压缩了 -
Preview - 网页格式, 在一个沙盒的iframe 中渲染响应的内容。一些web框架默认的返回错误的HTML,这时候Preview 是非常有用的。由于iframe沙盒的限制,JS和图片是不可以用的
Cookie - 查看响应的Cookie信息 Headers - 查看响应头 TestResults - 查看断言结果 Status - 查看响应状态码(200、404、502) Time - 查看响应时间 Size - 查看响应字节数
补 - 面试题:接口测试中get请求和post请求的区别是什么?
1. get请求一般是获取资源,post请求一般是提交资源
2. get请求通过在地址栏中以 ?方式传参,多个参数以 & 分隔;post请求是通过表单传参。
3. post请求比get请求安全( GET 请求方式从浏览器的 URL 地址就可以看到参数)
4.全局变量和环境变量
环境变量:可切换当前使用哪个环境变量,让接口/代码在不同的环境里面执行。 全局变量:作用于postman所有的文件夹 http端口默认:80 ; https端口默认:443 注意:当“环境变量”和“全局变量”设置同一个变量时,优先走“环境变量”的设置;当环境变量没有设置该变量时,才走全局变量的设置 能够在所有的接口请求里面使用的变量叫做全局变量。
5.接口关联
注意:面试官常问问题: 1. 接口测试里面,接口关联式如何实现的? 2. 接口测试中如何实现上一个接口的返回值作为下一个接口的参数?
A. 在Test里面通过Js代码,去获取解析返回的响应内容(1.Json对象解析 ; 2.正则表达式提取) -----最终都设置到全局或者环境变量,供后面接口使用 B. 其他方法(获取响应头Headers 与 响应 Cookies 的值)
6.Postman动态参数
Postman内置动态参数:(凡是双大括号里面有 $ 符的都是内置动态参数) 1. {{$timestamp}} : 生成当前时间的时间戳。(不是万能的) 2. {{$randomInt}} : 生成0~1000之间的随机数 。 3. {{$guid}} : 生成随机的GUID的字符串。 自定义动态参数: 1.手动制造一个时间戳,达到动态参数效果(要赋予全局变量,调用的话跟全局变量调用方法一致)
7.断言
接口断言:对接口请求后的内容进行设置,如状态码、响应时间、响应头、响应正文等信息进行断言操作。在设置时会给定一个预期结果,在发送请求后会得到一个实际结果,如果两者结果一致,则认为是成功的,否则则会失败。方便捕获失败,分析原因。
状态码断言三个: 1.状态码断言:Status code:Code is 200 2.状态码字符串断言:Status code:Code name has string 这里就是通过字符串判断了,比如 “OK” 、 "NOT FOUND"等 3.状态码集合判断断言: Status code:Successful POST request 这里是判断返回状态码只要满足设定集群里的一个,就代表成功通过,如下,状态码只要满足是200、201、203其中一个就代表成功 响应正文断言三个: 1.响应正文包含某字符串断言:Response body:Contains string 这里由于得到的响应内容是text格式的文本,所以需要注意转为unicode编码,设置于加上 “\\”。 2.响应正文是Json格式正文断言: Response body:JSON value check 这里只适用于响应正文是Json格式类型才可以用,其他格式无法适用。 3.响应正文是否完全等于某一个值断言:Response body:is equal to a string 这里需要响应正文要完全等于某一个值才生效! 用法非常少,要各种转译,基本不用 响应头部Headers断言一个: 1.响应头部 是否包含某个Server(Key): Response headers:Content-Type header check 这里 断言只能去判断Key,比如 Server 、 Content-Type 、 Date等,没法判断 key 后的 value 响应时间断言一个: 1.响应时间:Response time is less than 200ms 这里多用于性能的参考,响应时间与用户体验性挂钩
8.用例的批量执行
有时候需要批量执行多个串联接口,可以如下所示,使用【Run collection】,采用数据驱动方式:csv,json A.可以先创建数据文件(csv,json),csv如下:第一行为变量名,下面的为变量值,逗号分隔开来。 B.JSON如下: JSON格式数据驱动 C.修改接口/代码,去调用这些数据文件里面的变量。 调用分为两种:
- 在接口参数里面调用,与调用全局变量方法一致,采用: {{key}}
- 在断言里面取数据文件里面的值,采用:data[“key”]
D.配置【Run collection】,如下各配置项内容介绍,选择对应的数据驱动文件。执行,看结果。
9.必须要带请求头的接口的测试方法
常见请求头含义
10.Postman接口测试之Cookie鉴权
接口鉴权、接口加密、接口签名(金融项目、银行项目、信贷项目、特大型项目) 1.什么是Cookie? Cookie是一些网站为了识别用户和跟踪会话而存储在用户本地终端中的文本数据,是一段文本数据,通常是加密的。
2.Cookie鉴权的原理: 3.Cookie分类:
-
会话Cookie:保存在内存当中,浏览器关闭之后会自动消失。 -
持久Cookie:保存在硬盘当中,浏览器关闭之后不会消失,只有当持久化的时间到期之后,才会消失。
4.数据格式:
- Name:cookie的名称
- Value:cookie的值
- Domain:cookie的作用的IP地址
- path:cookie所在的服务器上面的项目的路径
- Expires:cookie失效时间,session表示会话cookie,浏览器退出就失效;时间表示持久cookie,具体失效时间如下图
- Size:cookie的大小
11.接口加密(像银行之类的,一般是采用多种混合加密,自定义混合加密,就是几种混在一起)
Postman加密方式只能通过代码方式: 1.对称式的加密方式(私钥加密):不常用DES和AES,已经被淘汰了 现在可能更常用的是Base64加密
A. Base64: 1.Base64加密 2.Base64解密 2.非对称式的加密方式(双钥《公钥和私钥》加密):RSA加密方式 由一个密码生成的双钥,当用公钥去加密时,则用私钥解密;当用私钥去加密时,则用公钥解密
3.只加密,不解密 a.MD5加密。(32位大写、32位小写、16位大写、16位小写) b.SHA1,SHA3,SHAN…
|