1、引言
了解小鱼的人都知道, 小鱼喜欢使用工具,但是不喜欢去写工具教程,
毕竟这种工具教程:一度娘,千千万,
但是,最近小鱼在面试过程中,也发现一个很奇怪的现象
只打开过Postman工具,就说过自己很了解Postman,
使用的有多牛多牛,然而,我问了基本的几个问题,就露馅了!
小鱼的面试特点:简历中你能写,小鱼就能聊(由浅入深的聊);
不管是框架级,工具级,代码级还是流程级。
为了能让各位求职者,跟面试官关于postman的使用,能扯上半个小时,
小鱼还是决定,把Postman的进阶教程整理汇总并share出来。
如果不是最近测试开发候选人的技术能力让我有些吃惊,
不然我真的不会去整理这篇博文。
因为关注小鱼博客的人,都知道,小鱼最近要推出 全链路压测专栏系列博文。
这也是小鱼默默的规划了两个月的产物。
因为全链路压测专栏规划的是33篇,所以,也是持续更新的专栏。
言归正传,咱们今天这篇,来讲Postman的进阶使用。
2、Postman详细教程
2.1 选择Postman的理由
市面上接口测试工具那么多,为什么偏偏对Postman情有独钟?
无非以下几个原因:
- 简单易用 : 要使用Postman,你只需登录自己的账户,只要在电脑上安装了Postman应用程序,就可以方便地随时随地访问文件。
- 使用集合 : Postman允许用户为他们的API调用创建集合。每个集合可以创建子文件夹和多个请求。这有助于组织测试结构。
- 多人协作 : 可以导入或导出集合和环境,从而方便共享文件。直接使用链接还可以用于共享集合。
- 创建环境 : 创建多个环境有助于减少测试重复(DEV/QA/STG/UAT/PROD),因为可以为不同的环境使用相同的集合。这是参数化发生的地方,将在后续介绍。
- 创建测试 : 测试检查点(如验证HTTP响应状态是否成功)可以添加到每个API调用中,这有助于确保测试覆盖率。
- 自动化测试 : 通过使用集合Runner或Newman,可以在多个迭代中运行测试,节省了重复测试的时间。
- 调试 : Postman控制台有助于检查已检索到的数据,从而易于调试测试。
- 持续集成:通过其支持持续集成的能力,可以维护开发实践。
2.2 安装
在使用工具前,第一步就是安装。
所以,Postman 也需要安装
这里说一下:Postman的起家,是Chrome浏览器的一个插件,由于使用的人越来越多,所以,后来索性就开发成一个接口工具。
- 网址:https://www.postman.com/downloads/
- 安装步骤:一直默认安装即可(也可以自定义安装)
- 登录:注册账号并登录(账号免费注册)
登录后界面如下
2.3 工作区功能介绍
- New:在这里创建新的请求、集合或环境;还可以创建更高级的文档、Mock Server 和 Monitor以及API。
- Import:这用于导入集合或环境。有一些选项,例如从文件,文件夹导入,链接或粘贴原始文本。
- Runner:可以通过Collection Runner执行自动化测试。后续介绍。
- Open New:打开一个新的标签,Postman窗口或Runner窗口。
- My Workspace : 可以单独或以团队的形式创建新的工作区。
- Invite : 通过邀请团队成员在工作空间上进行协同工作。
- History: 所有请求的历史记录,这样可以很容易地跟踪你所做的操作。
- Collections : 通过创建集合来组织你的测试套件。每个集合可能有子文件夹和多个请求。请求或文件夹也可以被复制。
- Request tab : 这将显示您正在处理的请求的标题。默认对于没有标题的请求会显示“Untitled Request”。
- HTTP Request - 单击它将显示不同请求的下拉列表,例如 GET, POST, COPY, DELETE, etc. 在测试中,最常用的请求是GET和POST。
- Request URL - 也称为端点,显示API的URL。.
- Save - 如果对请求进行了更改,必须单击save,这样新更改才不会丢失或覆盖。
- Params - 在这里将编写请求所需的参数,比如Key - Value。
- Authorization - 为了访问api,需要适当的授权。它可以是Username、Password、Token等形式。
- Headers - 请求头信息
- Body - 请求体信息,一般在POST中才会使用到
- Pre-request Script - 请求之前 先执行脚本,使用设置环境的预请求脚本来确保在正确的环境中运行测试。
- Tests - 这些脚本是在请求期间执行的。进行测试非常重要,因为它设置检查点来验证响应状态是否正常、检索的数据是否符合预期以及其他测试。
- Settings - 最新版本的有设置,一般用不到。
2.4 接口类型请求
2.4.1 Get请求处理
Get请求用于从指定的URL获取信息,不会对端点进行任何更改。
在这里我们使用如下的URL作为演示:
https://jsonplaceholder.typicode.com/users
在Postman的工作区中:
- 选择HTTP请求方式为GET
- 在URL区域输入 链接
- 点击 “Send”按钮
- 你将看到下方返回200状态码
- 在正文中应该有10个用户结果,表明您的测试已经成功运行。
2.4.2 Post请求处理
Post请求与Get请求不同,因为存在用户向端点添加数据的数据操作。使用之前GET 请求中相同数据,现在添加我们自己的用户。
- 步骤1:创建一个新请求图片
- 步骤2:在新请求中
①选择HTTP请求方式为GET
②在URL区域输入 链接:https://jsonplaceholder.typicode.com/users
③切换到Body选项
- 步骤3:Body选项
①选中raw选项
②选择JSON
- 步骤4:复制前面GET请求返回的json内容的第一节
更改id为11,更改name以及uesrname和email
[
{
"id": 11,
"name": "Krishna Rungta",
"username": "Bret",
"email": "Sincere@april.biz ",
"address": {
"street": "Kulas Light",
"suite": "Apt. 556",
"city": "Gwenborough",
"zipcode": "92998-3874",
"geo": {
"lat": "-37.3159",
"lng": "81.1496"
}
},
"phone": "1-770-736-8031 x56442",
"website": "hildegard.org",
"company": {
"name": "Romaguera-Crona",
"catchPhrase": "Multi-layered client-server neural-net",
"bs": "harness real-time e-markets"
}
}
]
- 步骤5:发送请求
①完成上述的信息输入,点击Send按钮
②Status:应该是201,显示为创建成功
③在Body里返回数据
2.4.3 请求参数化
数据参数化是Postman最有用的特征之一。你可以将使用到的变量进行参数化,而不是使用不同的数据创建相同的请求,这样会事半功倍,简洁明了。
这些数据可以来自数据文件或环境变量。参数化有助于避免重复相同的测试,可用于自动化迭代测试。
参数通过使用双花括号创建:{{sample}}。
比如下面的请求:
创建一个参数化get请求:
- 步骤1: 创建一个参数化get请求
①将HTTP请求设置为GET
②输入URL:https://jsonplaceholder.typicode.com/users;将链接的域名部分替换为参数,例如{{url}}。请求url现在应该是{{url}}/users。
③点击Send按钮。
应该没有响应,因为我们没有设置参数的源,如下图:
- 步骤2:使用环境设置所需的参数
①使用环境设置所需的参数
②单击Edit将该变量设置为可在所有集合中使用的全局环境。
- 步骤3:变量–variable
①将名称设置为url,该url为https://jsonplaceholder.typicode.com
②点击保存按钮
- 步骤5:回到你的Get请求页面,然后单击发送Send按钮,Get请求应该就会返回结果了,如下图:
2.5 创建Postman Tests
Postman Tests在请求中添加JavaScript代码来协助验证结果,如:成功或失败状态、预期结果的比较等等。
通常从pm.test开始。它可以与断言相比较,验证其他工具中可用的命令。
接下来创建一个包含Tests的请求:
- 步骤1: 创建一个Get请求
①切换到Tests选项,右边是代码片段选项。
②从右边的代码片段选项里面选中 “Status code: Code is 200”
③JS代码就自动出现在窗口中
- 步骤2:点击发送请求按钮。测试结果就显示出来了,如下图:
- 步骤3:回到Tests选项卡,让我们添加另一个测试。这次我们将比较预期结果和实际结果。
在右边的SNIPPETS区域选择"Response body:JSON value check"选项,我们将检查Leanne Graham是否拥有userid 1。
- 步骤4:
①将代码中的“Your Test Name”替换为“Check if user with id1 is Leanne Graham”,以便测试名称确切描述我们想测试的内容。
②使用jsonData[0].name代替jsonData.value; 获取路径,在获取结果之前检查Body。因为Leanne Graham是userid 1,所以jsonData在第一个结果中,这个结果应该从0开始。如果你想获得第二个结果,那么对后续结果使用jsonData[1] 即可。
③在eql中,输入“Leanne Graham”
pm.test("Check if user with id1 is Leanne Graham", function () {
var jsonData = pm.response.json();
pm.expect(jsonData[0].name).to.eql("Leanne Graham");
});
- 步骤5: 点击发送请求,可以看到你的请求之后测试结果中有两项显示测试通过。
2.6 创建测试集合
集合在组织测试套件中扮演着重要的角色。它可以被导入和导出,使得在团队之间共享集合变得很容易。在本教程中,我们将学习如何创建和执行集合。
- 步骤2:选择Collection(集合). 创建collection窗口弹出,如下图
- 步骤3: 输入所需的集合名称和描述,然后单击create。
- 步骤4:和前面的Get请求一样,点击保存。
- 步骤5:测试集合
①选择Postman 测试集合(Test Collection)。
②点击保存Postman Test Collection
- 步骤6: Postman test collection现在应该包含了一个请求
- 步骤7:重复上述的Step4-5,继续创建请求,这样,测试集合就应该有2个请求了,如下图。
2.7 运行Collection Runner 测试集合
- 步骤1: 单击页面顶部导入按钮旁边的Runner按钮,如下图。
- 步骤2:Collection Runner页面应该出现如下所示。以下是对各个字段的描述
①选择Postman测试集合-集合迭代次数为3
②设置延迟为2500毫秒
③点击Start Run按钮
- 步骤4: 单击Run按钮后将显示Run结果页。根据延迟的不同,你应该在测试执行的同时看到显示的结果。
①一旦测试完成,你就可以看到测试状态是通过还是失败,以及每个迭代的结果。
②你将看到Get请求的Pass状态;
③由于我们没有任何Post测试,所以应该会出现请求没有任何测试的消息。
可以出在请求中进行测试是多么重要,这样你就可以验证HTTP请求状态是否成功,以及是否创建或检索了数据。
3、总结
看到这,今天的分享,就快要结束了。
我们来回顾一下,今天主要的内容:
- Postman的安装
- 工作区功能介绍
- 列举接口请求类型的处理方式
- 请求参数化
- 测试集合的创建
- 测试集合的运行
一个整体的流程,大概就是这样。
完全掌握这些功能操作流程,也就能跟面试官扯上半个小时了。
当然,我们的目的,是为了完全的掌握,而不是为了应付面试官!