1 postman简介
1.1 什么是Postman
Postman 提供功能强大的 Web API 和 HTTP 请求的调试,它能够发送任何类型的HTTP 请求 (GET, POST, PUT, DELETE…),并且能附带任何数量的参数和 Headers。而且它还提供测试数据和环境 配置数据的导入导出,付费的 Post Cloud 用户还能够创建自己的 Team Library 用来团队协作式的测 试,并能够 将自己的测试收藏夹和用例数据分享给团队。 从分层测试的角度来说,接口测试是必备技能。常见的接口测试工具很多,如:jmeter, soapui,postman等。相比较jmeter而言,postman它不仅可以调试简单的css、html、脚本等简单的网 页基本信息,它还可以发送几乎所有类型的HTTP请求!Postman在调试HTTP请求方面可以说是很方便的接口 测试产品之一。 postman适用于不同的操作系统,还支持postman浏览器扩展程序、postman chrome应用程序等。但 是 浏览器插件目前Google已经停止更新了。
9.2 Postman下载和安装
9.2.1 Postman的下载
官网下载: 地址:https://www.getpostman.com/downloads/,选择页面中的“Download”,根据自 己电脑配置, 选择32位下载还是64位下载
9.2.2 Postman的安装过程
- 双击下载好的安装包
- 因为Postman是免安装的,双击安装包,自动安装到本地电脑中
- 查看Postman界面,出现如下图所示,说明安装成功
- 登录,点击进入workspace页面
9.3 Postman主界面的介绍
9.3.1 工具栏
9.4 Postman基本操作
9.4.1 新建测试集、文件夹、请求用例
点击collections,点击+,点击create new collection
点击collection右边的三个点,点击add request是添加请求,add folder是添加文件夹
9.4.2 get请求
新建一个get请求,如图所示
设置请求方式为get
粘贴网址
添加请求参数,参数添加后会在url上显示出来,如图中所示的?id=1005008&page=1&size=100
如果有请求头,在请求头的部分添加,也是键值对
-
点击send之后,下面显示响应数据,可以是html,json,xml...
9.4.3 post请求
-
提交form表单,如图所示
接口:https://www.wanandroid.com/user/login
方法:POST
参数:username,password
post请求的参数信息在Body中添加 form表单提交需要选中x-www-form-urlencoded 请求头添加和get请求相同,在Headers中添加 -
json提交
下图中,当我们选择JSON(application/json) 是会自动帮我们设置 headers 为 application/json
在这里就不截图 举例了 -
xml提交
-
二进制文件提交
其它请求方式如PUT,DELETE 大致流程和GET,POST 差不多,这里就不一一举例说明了。
9.4.4 授权Authorization
Authorization,授权就是验证我们是否有权限从服务器访问所需的数据。发送请求时,通常必须包含参数以确保请求有权访问并返回所需的数据,比如需要登录之后才能访问的数据。Postman提供的授权类型可以让我们轻松处理Postman进行接口测试中的身份验证协议。
在postman中Authorization分为以下几种类型:
注意:应当注意:NTLM和BearerToken仅在Postman本地应用程序中可用。所有其他授权类型都可
以在Postman本地应用程序和Chrome应用程序中使用。
- Inherit auth from parent
向集合或文件夹添加授权。 假设您在集合中添加了一个文件夹。在授权选项卡下,默认的授权类型将被设置为“从父类继承auth”。 “从父”设置的“继承auth”指示默认情况下,该文件夹中的每个请求都使用父类的授权类型。在本例中, 该集合使用“No Auth”,因此该文件夹使用“No Auth”,这意味着该文件夹中的所有请求将使用“No Auth” 如果您希望将父集合授权类型保留为“No Auth”,但要更新这个特定的文件夹的授权助手,该怎么办呢? 您可以编辑文件夹的详细信息,从类型下拉菜单中选择“基本的Auth”,并输入您的凭证。因此,这个文件夹中 的每个请求都依赖于“基本的Auth”,而父集合中的其余请求仍然不使用任何授权 - No Auth
默认情况下,“No Auth”出现在下拉菜单列表中。当您不需要授权参数发送请求时,使用“No Auth”。 - Bearer Token
Bearer Token是安全令牌。任何带有Bearer Token的用户都可以使用它来访问数据资源,而无需使用加密 密钥。 使用Bearer Token: 第一步:从下拉菜单中选择“Bearer Token”。 第二步:要设置请求的授权参数,请输入令牌的值。 第三步:点击发送按钮。 - Basic auth
Basic Auth是一种授权类型,需要验证用户名和密码才能访问数据资源。 使用基本身份验证: 第一步:从下拉菜单中选择“Basic Auth”。 第二步:要设置请求的授权参数,请输入您的用户名和密码。 第三步:点击发送按钮。 - Digest Auth
在“Digest Auth”流程中,客户端向服务器发送请求,服务器返回客户端的nonce和realm值;客户端 对用户名、密码、nonce值、HTTP请求方法、被请求资源URI等组合后进行MD5运算,把计算得到的摘要信息 发送给服务端。服务器然后发回客户端请求的数据。 通过哈希算法对通信双方身份的认证十分常见,它的好处就是不必把具备密码的信息对外传输,只需将这 些密码信息加入一个对方给定的随机值计算哈希值,最后将哈希值传给对方,对方就可以认证你的身份。 Digest思想同样采如此,用了一种nonce随机数字符串,双方约好对哪些信息进行哈希运算即可完成双 方身份的验证。Digest模式避免了密码在网络上明文传输,提高了安全性,但它仍然存在缺点,例如认证报文 被攻击者拦截到攻击者可以获取到资源。 默认情况下,Postman从响应中提取值对应的值。如果不想提取这些值,有以下两种选择: 在所选字段的高级部分中输入您自己的值勾选“Yes,disable retrying the request”复选框。 - OAuth 1.0
OAuth 1.0是一种可以让我们在不公开密码的情况下授权使用其他应用程序的授权模式。 在Postman中按照以下步骤使用OAuth 1.0授权: 在Authorization下来授权标签中选择“OAuth 1.0”授权模式;在“Add authorization data to” 下拉选择框中,选择对应的请求模式。 当选择“Request Body/Request URL”时,Postman将检查请求方法是POST还是PUT,以及请求主体 类型是否是x-www-form-urlencoded;如果是这样,Postman将增加授权参数到请求主体。对于所有其他 情况,它会向URL添加授权参数。 - OAuth 2.0
OAuth 2.0作为OAuth 1.0的升级版本。在Postman中按照以下步骤进行使用: 在Authorization下来授权标签中选择“OAuth 2.0”授权模式在“Add authorization data to” 下拉选择框中,选择对应的请求模式; 设置请求的授权参数,有以下三个选择: 点击“Get New Access Token”按钮,在弹出的对话框中输入对应的参数;单击“Request Token”按 钮获取对应的Token。接下来有了对应的Token后,就可以点击“Send”按钮发送请求了; 在“Access Token”输入框中输入一个Token,或者Token对应的环境变量,然后就可以点击“Send”按 钮发送请求了; 在“Available Tokens”下拉框中选择已经存在的Token,然后发送请求。
案例:
//登录
https://www.liulongbin.top:8888/api/private/v1/login
post方法
参数: username(admin),password(123456)
//上传图片
https://www.liulongbin.top:8888/api/private/v1/upload
post
请求头 :authorization : Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1aWQiOjUwMCwicmlkIjowLCJpYXQiOjE2MTU4NjI zODksImV4cCI6MTYxNTk0ODc4OX0.Rr-M1MTfVWER3i8KiIIlfP0mW6oHYu05Sz6WzCeaKSA
参数: file -- 文件
可以给接口集
9.5 Pre-request Script--预处理脚本
Pre-request Script,翻译中文为预处理脚本,是请求发送之前需要执行的代码片段,在我们点击send发起请求之前,改区域的代码先执行。
使用场景:例如请求中包含一个随机数或者时间戳(时间的毫秒值),或者参数需要加密。
-
给一个接口添加预处理脚本:新建一个网络请求,点击Pre-request Script,写入js脚本获取时间的毫秒值(时间戳)
2.给接口集添加预处理脚本:如图所示,完成后以后接口集下面所有接口在请求的时候都会先执行预请求脚本
在输入框右侧有一些简单的js脚本生成按钮,可以通过按钮生成
9.6 Tests内置脚本
既然有在请求发起之前执行的脚本,那么是否有在请求完成之后执行的脚本呢? 有
Tests里面输入的脚本就是在网络请求之后执行的,Postman的强大之处在于其允许在对某一个request访问的之前和之后分别运行自定义的一段Javascript脚本,这样直接就完成了一个chain request效果,可以将数条request连结成一个流程完成一体化测试。
如下在Pre-request Script和Tests中分别输入了js代码,执行如下如所示:
9.7 命令行运行接口结合
9.7.1 命令行运行
执行命令行前提条件是需要newman,newman是需要nodejs来安装的,所以得先下载安装
node.node下载地址:https://nodejs.org/en/download/
cmd模式下输入node -v,回车,显示node版本号,即为安装成功 npm(node package manager):nodejs的包管理器,用于node插件管理(包括安装、卸载、管理依赖 等)cnpm:淘宝团队的cnpm是npm在国内的镜像,可以用此代替官方版本(只读),同步频率目前为 10分钟 一次 以保证尽量与官方服务同步。 安装完后查看版本cnpm -v 安装newman:cnpm install newman --global 检查是否安装成功:newman -v 安装newman-reporter-html 执行cnpm install -g newman-reporter-html 在测试文件夹 pmtest 里面可以看到生成的一个 newman 文件夹,打开就可以看到生成的测试报告。
9.8 环境变量的使用
9.8.1 Postman 环境变量的应用
点击眼睛图标可以查看所有的环境变量和全局变量。点击眼睛图标右边的设置图标可以设置环境变量和全局变 量。环境变量可以分组设置,并且在使用的时候选择其中一组环境变量。 使用环境变量 {{baseUrl}} 两边各量 个花括号括起来 这个环境变量可以在url 中使用,也可以在header 中能使用,还能在请求体中使用
选中No Environment(选中已有环境就变成编辑了)--> 点击眼睛-->点击Add
- 案例:新建两个环境,都创建相同的环境变量baseUrl值使用不同的网址,新建请求,使用
{{baseUrl}},切换环境后,同一个请求访问到的页面不一样
9.9 全局变量的使用
9.9.1 Postman全局变量的应用
postman 的环境变量可以分组,但是全局变量不能分组,只能有一组全局变量,在设置和使用都类似于环境 变量。在下图位置设置全局变量。
点击右上角眼睛 --> 点击Globals右边的Edit,添加全局变量,点击save保存,和环境变量一样,通过{{timestamp}}引用
- 案例:添加时间戳
</article>