- Postman 教程
- Postman - 主页
- Postman - 简介
- Postman - 环境设置
- Postman - 环境变量
- Postman - 授权
- Postman - 工作流
- Postman - GET 请求
- Postman - POST 请求
- Postman - PUT 请求
- Postman - DELETE 请求
- Postman - 为 CRUD 创建测试
- Postman - 创建集合
- Postman - 参数化请求
- Postman - 集合运行器
- Postman - 断言
- Postman - 模拟服务器
- Postman - Cookie
- Postman - 会话
- Postman - Newman 概述
- Postman - 使用 Newman 运行集合
- Postman - OAuth 2.0 授权
- Postman 有用资源
- Postman 快速指南
- Postman - 有用资源
- Postman - 讨论
Postman 快速指南
Postman - 简介
Postman 是一款应用程序编程接口 (API) 测试工具。API 充当两个应用程序之间的接口,并在它们之间建立连接。
因此,API 是应用程序可以提供给其用户的一组协议、函数和工具,以便与另一个应用程序成功通信。每当我们访问应用程序(例如通过手机查看新闻、Facebook 等)时,都需要 API。
Postman 由软件开发人员和企业家 Abhinav Asthana 于 2012 年设计,旨在简化 API 开发和测试。它是一个用于测试 API 软件的工具。它可用于设计、记录、验证、创建和更改 API。
Postman 具有发送和观察超文本传输协议 (HTTP) 请求和响应的功能。它具有图形用户界面 (GUI),可以在 Linux、Windows 和 Mac 等平台上使用。它可以构建多个 HTTP 请求 - POST、PUT、GET、PATCH 并将其转换为代码。
Postman 的需求
Postman 拥有庞大的用户群,并且由于以下列出的原因已成为一个非常流行的工具:
Postman 无需任何许可费用,适用于任何规模的团队使用。
Postman 使用非常简单,只需下载即可。
在设备上安装后,可以通过登录您自己的帐户非常轻松地访问 Postman。
Postman 借助集合可以轻松维护测试套件。用户可以创建 API 调用的集合,其中可以包含各种请求和子文件夹。
Postman 能够构建多种 API 调用,例如 SOAP、REST 和 HTTP。
Postman 通过向 HTTP 响应代码和其他参数添加检查点,可以用于测试开发。
Postman 可以与持续集成和持续交付或持续部署 (CI/CD) 管道集成。
Postman 可以与 Newman 或集合运行器集成,允许以多次迭代执行测试。因此,我们可以避免重复测试。
Postman 拥有强大的社区支持。
Postman 控制台允许调试测试步骤。
使用 Postman,我们可以创建多个环境。因此,单个集合可以与各种配置一起使用。
Postman 提供导入/导出环境和集合的选项,从而可以轻松共享文件。
使用 Postman
要开始使用 Postman,我们有如下所示的导航。它主要包括四个部分:
- 标题
- 响应
- 侧边栏
- 构建器
以下是 Postman 中可用导航的屏幕截图:
标题
Postman 包括新建、导入、运行器(用于使用集合运行器执行测试)、打开新建、拦截器、同步菜单等。它显示工作区名称 - 我的工作区以及邀请选项,以便在团队之间共享。
新建菜单用于创建新的环境、集合或请求。导入菜单有助于导入环境/集合。
我们可以从文件、文件夹、链接、原始文本或代码存储库选项导入,这些选项也可在导入下找到。
在这里,打开新建用于打开一个新的选项卡、Postman 或运行器窗口。
响应
响应部分只有在发出请求时才会填充值。它通常包含响应详细信息。
侧边栏
侧边栏包含集合(用于维护测试,包含文件夹、子文件夹、请求)、历史记录(记录过去所有 API 请求)和 API。
构建器
构建器是 Postman 应用程序中最重要的部分。它具有请求选项卡并显示当前请求名称。如果未为请求提供标题,则默认情况下会显示“未命名请求”。
构建器部分还包含请求类型(GET、POST、PUT 等)和 URL。使用发送按钮执行请求。如果对请求进行了任何修改,我们可以使用保存按钮保存它。
构建器部分具有参数、授权、标题、主体、前置条件、测试和设置等选项卡。键值对中请求的参数在参数选项卡中提及。使用用户名、密码、令牌等的 API 授权位于授权选项卡中。
请求标题和主体分别在标题和主体选项卡中定义。有时,在请求之前需要执行预条件脚本。这些在“前置条件”选项卡中提及。
测试选项卡包含在触发请求时运行的脚本。这有助于验证 API 是否正常工作以及获取的数据和响应代码是否正确。
Postman - 环境设置
Postman 可以安装在 Mac、Windows 和 Linux 等操作系统中。它基本上是一个独立的应用程序,可以通过以下方式安装:
Postman 可以从 Chrome 扩展程序安装(仅在 Chrome 浏览器中可用)。
可以将其安装为独立应用程序。
独立应用程序
要在 Windows 中将 Postman 作为独立应用程序下载,请导航到以下链接 https://www.postman.com/downloads/
然后,单击“下载应用程序”按钮。根据操作系统的配置,选择“Windows 32 位”或“Windows 64 位”选项。
将打开保存可执行文件的弹出窗口。点击“保存文件”。
下载成功完成后,将生成可执行文件。
双击它进行安装。
安装后,将打开 Postman 登录屏幕。此外,我们还必须在此处注册。有两种创建 Postman 帐户的选项,如下所示:
- 点击创建免费帐户。
- 使用 Google 帐户。
继续执行帐户创建步骤并输入相关详细信息,例如姓名、角色等。
最后,我们将进入 Postman 的启动屏幕。您的计算机上将出现以下屏幕:
Chrome 扩展程序
要将 Postman 作为 Chrome 浏览器扩展程序下载,请在 Chrome 中启动以下链接:
https://chrome.google.com/webstore/detail/postman/fhbjgbiflinjbdggehcddcbncdddomop?
然后,单击“添加到 Chrome”。
将显示一个弹出窗口,单击“添加应用程序”按钮。
Chrome 应用页面将启动,以及 Postman 图标。接下来,我们必须单击 Postman 图标。
Postman 的安装开始。
安装完成后,将打开 Postman 注册页面。我们可以按照前面说明的方式继续注册(在将 Postman 安装为独立应用程序时),或者通过单击“直接带我到应用程序”链接跳过它。
我们以后可以创建帐户。
注册是一个重要的步骤,因为它允许从其他机器访问用户数据。接下来,将打开 Postman 欢迎页面。
关闭弹出窗口并转到下一页后,我们会收到一条消息 -“Chrome 应用即将弃用”。
始终建议将 Postman 安装为独立应用程序,而不是 Chrome 扩展程序。
Postman - 环境变量
变量提供在请求、集合、脚本等中保存和重复参数的选项。如果我们需要修改值,则只需在一个地方进行修改。因此,变量有助于最大程度地减少错误的机会并提高效率。
在 Postman 中,环境由键值对组成。它有助于分别识别每个请求。当我们创建环境时,我们可以修改键值对,这将从相同的请求生成不同的响应。
环境中键值对中的键称为环境变量。可以有多个环境,并且每个环境也可以有多个变量。但是,我们一次只能使用一个环境。
简而言之,环境允许在不同的数据集上执行请求和集合。我们可以为生产、测试和开发创建环境。这些环境中的每一个都将具有不同的参数,例如 URL、密码等。
创建环境
请按照以下步骤在 Postman 中创建环境:
**步骤 1** - 导航到“新建”菜单,然后单击“环境”。
**步骤 2** - 将打开“管理环境”弹出窗口。我们必须输入环境名称。然后,添加变量名称和值。
在这里,我们添加了变量 **u**,其值为 https://jsonplaceholder.typicode.com/users。关闭弹出窗口。
**步骤 3** - 新的环境 (ENV1) 将作为“无环境”下拉列表中的项目之一显示。
**步骤 4** - 选择 **ENV1 环境**并在地址栏中输入 **{{u}}**。要在请求中使用环境变量,我们必须将其用双大括号括起来 **({{<环境变量名称>}})**。
**步骤 5** - 然后,单击“发送”。此变量可以代替实际 URL 使用。我们已收到响应代码 **200 0K**(表示请求成功)。
环境变量范围
环境变量的范围在其创建的环境内。这意味着它具有限制在该环境中的局部范围。如果我们选择另一个环境并尝试访问相同的环境变量,我们将收到错误。
在本章中,我们在 **ENV1 环境**中创建了一个环境变量 **u**,并在发送 GET 请求时,我们得到了所需的响应。
但是,如果我们尝试从另一个环境(例如 Environment_Test)使用相同的环境变量 u,我们将收到错误。
以下屏幕显示了如果我们从另一个环境使用相同的环境变量 u 可能会出现的错误:
Postman - 授权
在 Postman 中,授权用于验证用户访问服务器中资源的资格。项目中可能有多个 API,但其访问权限可以仅限于某些授权用户。
授权过程适用于需要保护的 API。此授权用于识别和验证用户是否有权访问服务器资源。
这在 Postman 的“授权”选项卡中完成,如下所示:
在“类型”下拉列表中,有多种授权选项,如下所示:
现在让我们使用来自 GitHub 开发人员的 API 创建一个 POST 请求,其端点为 **https://www.api.github.com/user/repos**。在 Postman 中,单击“主体”选项卡并选择“原始”选项,然后选择 JSON 格式。
添加以下请求主体:
{ "name" : "Tutorialspoint" }
然后,点击发送。
获得的响应代码为401 未授权。这意味着,我们需要传递授权才能使用此资源。要进行授权,请在“授权”选项卡内的“类型”下拉列表中选择任何选项。
授权类型
让我们讨论一些重要的授权类型,即 Bearer Token 和 Basic Authentication。
Bearer Token
对于 Bearer Token 授权,我们必须从“类型”下拉列表中选择“Bearer Token”选项。之后,将显示“Token”字段,需要提供该字段才能完成授权。
步骤 1 - 要获取 GitHub API 的 Token,首先登录到 GitHub 帐户,点击此处提供的链接 - https://github.com/login。
步骤 2 - 登录后,点击屏幕右上角并选择设置选项。
现在,选择开发者设置选项。
接下来,点击个人访问令牌。
现在,点击生成新令牌按钮。
提供一个备注并选择 repo 选项。然后,点击页面底部的生成令牌。
最后,将生成一个令牌。
复制该令牌并将其粘贴到 Postman 中“授权”选项卡下的“Token”字段中。然后,点击发送。
请注意 - 此处,令牌对于特定的 GitHub 帐户是唯一的,不应共享。
响应
响应代码为201 已创建,这意味着请求已成功。
Basic Authentication
对于 Basic Authentication 授权,我们必须从类型下拉列表中选择Basic Auth选项,以便显示“用户名”和“密码”字段。
首先,我们将向一个端点发送 GET 请求(https://postman-echo.com/basic-auth),并在“类型”下拉列表中选择未选择任何授权选项。
请注意 - 上述端点的用户名为 postman,密码为 password。
获得的响应代码为401 未授权。这意味着此 API 的授权未通过。
现在,让我们选择Basic Auth作为授权类型,之后将显示“用户名”和“密码”字段。
在“用户名”字段中输入 postman,在“密码”字段中输入 password。然后,点击发送。
现在获得的响应代码为 200 OK,这意味着我们的请求已成功发送。
No Auth
我们也可以使用请求头执行 Basic Authentication。首先,我们必须从“授权”选项卡中选择No Auth选项。然后在“Headers”选项卡中,我们必须添加一个键 - 值对。
我们将键设置为 Authorization,值为用户名的用户名和密码,格式为basic < 编码凭据 >。
我们示例中使用的端点为 - https://postman-echo.com/basic-auth。要对用户名和密码进行编码,我们将借助具有以下 URL 的第三方应用程序 - https://www.base64encode.org
请注意 - 我们此处端点的用户名为 postman,密码为 password。在编辑框中输入 postman-password 并点击 Encode。编码后的值将在底部填充。
我们将接收到的编码后的用户名和密码 cG9zdG1hbjpwYXNzd29yZA== 添加到 Header 中,格式为 -basic cG9zdG1hbjpwYXNzd29yZA ==。然后,点击发送。
从“类型”下拉列表中选择No Auth。
获得的响应代码为200 OK,这意味着我们的请求已成功发送。
集合中的授权
要为集合添加授权,请按照以下步骤操作 -
步骤 1 - 点击 Postman 中集合名称旁边的三个点,然后选择编辑选项。
步骤 2 - 将弹出“编辑集合”窗口。移动到“授权”选项卡,然后从“类型”下拉列表中选择任何选项。点击更新。
Postman - 工作流
在 Postman 集合中,请求按其出现的顺序执行。每个请求首先按文件夹的顺序运行,然后是集合根目录中的任何请求。
让我们创建一个包含四个请求的集合(Collection1)。有关如何创建集合的详细信息在“创建集合”章节中有详细介绍。
步骤 1 - 点击侧边栏中集合名称右侧出现的箭头。然后,点击运行按钮以触发集合中请求的执行。
步骤 2 - 将弹出“集合运行器”窗口。“运行顺序”部分显示请求从上到下执行的顺序。(GET->POST->DEL->PUT)。点击运行 Collection1按钮。
步骤 3 - 执行结果显示 GET 请求首先执行,然后是 POST,然后是 DEL,最后是 PUT,如步骤 2 中的“运行顺序”部分所述。
如果我们想更改要执行的请求的顺序(例如,首先运行 Get 请求,然后是创建用户,然后是更新请求,最后是删除请求)。我们必须借助postman.setNextRequest()函数。
此函数具有声明哪个请求接下来执行的功能。要执行的下一个请求名称作为参数传递给此函数。根据工作流程,我们必须在 Postman 中端点地址栏下的“测试”或“预请求脚本”选项卡中添加此函数。
在 Postman 中执行请求的语法如下所示 -
postman.setNextRequest("name of request")
工作流的实现
Postman 中工作流的实现将在下面分步骤说明 -
步骤 1 - 在“测试”选项卡下,为“创建用户”请求添加以下脚本。
postman.setNextRequest("Update Request")
将出现以下屏幕 -
步骤 2 - 在“测试”选项卡下,为“更新请求”请求添加以下脚本。
postman.setNextRequest("Delete Request")
将出现以下屏幕 -
工作流的输出
以下是工作流的输出 -
输出显示“更新请求”和“删除请求”处于无限循环中,直到我们通过点击“停止运行”按钮停止它。
无限工作流循环
如果我们想通过脚本停止无限工作流循环,我们必须为“删除请求”请求添加以下脚本。
postman.setNextRequest(null)
将出现以下屏幕 -
再次运行相同的集合,输出将如下所示 -
输出显示执行顺序为 Get 请求、创建用户、更新请求,最后是删除请求。
Postman - GET 请求
GET 请求用于从服务器获取详细信息,并且对服务器没有任何影响。GET 请求不会更新任何服务器数据,而是在其触发时。服务器仅将其响应发送到请求。
创建 GET 请求
按照以下步骤在 Postman 中成功创建 GET 请求 -
步骤 1 - 点击 Postman 应用程序中的“新建”菜单。将弹出“新建”窗口。然后点击“请求”链接。
步骤 2 - 将弹出“保存请求”窗口。输入请求名称,然后点击“保存”。
步骤 3 - “请求名称(Test1)”将反映在“请求”选项卡上。然后,我们将从 HTTP 请求下拉列表中选择GET选项。
步骤 4 - 在地址栏中输入 URL - https://tutorialspoint.com/index.htm 并点击“发送”。
响应
发送请求后,我们可以看到响应中填充了响应代码200 OK。这表示请求成功且端点正确。此外,还填充了完成请求所需的时间(223 毫秒)和有效负载大小(20.75 KB)的信息。
将鼠标悬停在响应时间上,我们可以看到 DNS 查找、SSL 握手等不同事件所花费的时间。
将鼠标悬停在有效负载大小上,将显示有关响应、标头、正文等大小的详细信息。
响应正文包含子选项卡 - “美化”、“原始”和“预览”。“美化”格式显示关键字的颜色格式和缩进,便于阅读。“原始”格式显示与“美化”选项卡中显示的相同数据,但不带任何颜色或缩进。
“预览”选项卡显示页面的预览。
原始选项卡
将出现以下屏幕 -
预览选项卡
将出现以下屏幕 -
响应还包含 Cookie、标头和测试结果。
Postman - POST 请求
Postman POST 请求允许将数据追加到端点。这是一种用于在服务器的请求正文中添加信息的方法。它通常用于传递敏感信息。
一旦我们通过 POST 方法发送了一些请求正文,API 就会反过来在响应中向我们提供某些信息。因此,POST 请求总是伴随着正确格式的正文。
创建 POST 请求
按照以下步骤在 Postman 中成功创建 POST 请求 -
步骤 1 - 点击 Postman 应用程序中的新建菜单。将弹出新建窗口。然后,点击“请求”链接。
步骤 2 - 将弹出保存请求窗口。输入请求名称,然后点击保存。
步骤 3 - “请求名称(Test1)”将反映在“请求”选项卡上。此外,我们还将从 HTTP 请求下拉列表中选择POST选项。
然后,在地址栏中输入 URL https://jsonplaceholder.typicode.com/users。
步骤 4 - 移动到地址栏下方的“正文”选项卡,然后选择原始选项。
步骤 5 - 然后,从“文本”下拉列表中选择JSON。
步骤 6 - 将以下信息复制并粘贴到 Postman 的“正文”选项卡中。
{ "id": 11, "name": "Tutorialspoint", "username": "Test1", "email": "[email protected]", "address": { "street": "qa street", "suite": "Apt 123", "city": "Kochi", "zipcode": "49085", "geo": { "lat": "-3.3155", "lng": "94.156" } }, "phone": "99599125", "website": "Tutorialspoint.com", "company": { "name": "Tutorialspoint", "catchPhrase": "Simple Easy Learning", "bs": "Postman Tutorial" } }
通过 POST 方法发送的上述数据仅适用于端点:https://jsonplaceholder.typicode.com/users。
要以正确的 JSON 格式传递数据,我们可以使用以下链接中提供的 Jsonformatter -
https://jsonformatter.curiousconcept.com/
步骤 7 - 点击“发送”按钮。
响应
发送请求后,我们可以看到响应中填充了响应代码 201 已创建。这表示请求成功,并且我们发送的请求已被服务器接受。
此外,还填充了完成请求所需的时间(347 毫秒)和有效负载大小(1.61 KB)的信息。
我们可以看到响应正文与我们发送到服务器的请求正文相同。
Postman - PUT 请求
Postman PUT 请求用于将数据传递到服务器以创建或修改资源。POST 和 PUT 之间的区别在于 POST 请求不是幂等的。
这意味着多次调用相同的 PUT 请求将始终产生相同的输出。但是多次调用相同的 POST 请求将创建多个类似的资源。
在创建 PUT 请求之前,我们首先将向服务器上的端点发送 GET 请求 - http://dummy.restapiexample.com/api/v1/employees。有关如何创建 GET 请求的详细信息在“Postman GET 请求”章节中有详细介绍。
应用 GET 方法后,获得的响应正文如下所示 -
现在,让我们使用 PUT 请求更新 id 为 21 的记录的employee_salary和employee_age。
创建 PUT 请求
按照以下步骤在 Postman 中成功创建 PUT 请求 -
步骤 1 - 点击 Postman 应用程序中的新建菜单。将弹出新建窗口。然后,点击“请求”链接。
步骤 2 - 将弹出保存请求窗口。输入请求名称,然后点击保存。
步骤 3 - “请求名称(Test1)”将反映在“请求”选项卡上。我们将从 HTTP 请求下拉列表中选择 PUT 选项。
然后在地址栏中输入 URL - http://dummy.restapiexample.com/api/v1/update/21(更新 id 为 21 的记录的端点)。
必须注意,在 PUT 请求中,我们必须在 URL 中提及要更新的服务器中资源的 id。
例如,在上一个 URL 中,我们添加了 ID 21。
步骤 4 − 移动到地址栏下方的主体选项卡,然后选择原始选项。
步骤 5 − 然后,从文本下拉菜单中选择 JSON。
步骤 6 - 将以下信息复制并粘贴到 Postman 的“正文”选项卡中。
{ "name": "Jenette Caldwell","salary": "2000","age": "15"}
PUT 请求需要设置的总体参数如下所示:
步骤 7 − 点击发送按钮。
响应
发送请求后,我们可以在响应主体中看到填充的响应代码 200 OK。这表示请求成功,我们发送的请求已被服务器接受。
此外,还会填充完成请求所需的时间 (673 毫秒) 和有效负载大小 (705 B) 的信息。响应主体显示,ID 为 21 的员工的工资和年龄分别更新为 2000 和 15。
Postman - DELETE 请求
Postman DELETE 请求删除服务器中已存在的资源。DELETE 方法向服务器发送请求,以删除端点中提到的请求。因此,它能够更新服务器上的数据。
在创建 DELETE 请求之前,我们首先需要向服务器上的端点发送 GET 请求:http://dummy.restapiexample.com/api/v1/employees。有关如何创建 GET 请求的详细信息在 GET 请求章节中有详细说明。
应用 GET 方法后,将获得以下响应主体:
让我们从服务器中删除 ID 为 2 的记录。
创建 DELETE 请求
按照以下步骤在 Postman 中成功创建 DELETE 请求:
步骤 1 - 点击 Postman 应用程序中的新建菜单。将弹出新建窗口。然后,点击“请求”链接。
步骤 2 − 将弹出保存请求窗口。输入请求名称,然后点击保存。
步骤 3 − 请求名称 (Test1) 将反映在请求选项卡上。我们将从 HTTP 请求下拉菜单中选择DELETE选项。
然后在地址栏中输入 URL - http://dummy.restapiexample.com/api/v1/delete/2(删除 ID 为 2 的记录的端点)。
在这里,在 DELETE 请求中,我们在 URL 中提到了我们要在服务器中删除的资源的 ID。
步骤 4 − 点击发送按钮。
响应
发送请求后,我们可以在响应中看到填充的响应代码200 OK。这表示请求成功,我们发送的请求已被服务器接受。
此外,还会填充完成请求所需的时间 (734 毫秒) 和有效负载大小 (652 B) 的信息。响应显示状态为成功。记录 ID 2 已从服务器中删除。
删除 ID 为 2 的记录后,如果我们对端点运行 GET 请求:http://dummy.restapiexample.com/api/v1/employee/2,我们将收到 401 未授权状态代码。
Postman - 为 CRUD 创建测试
CRUD 代表在浏览器中打开的任何网站上的创建、检索、更新和删除操作。每当我们启动应用程序时,都会执行检索操作。
在创建数据时,例如,为网站添加新用户,则执行创建操作。如果我们正在修改信息,例如,更改网站中现有客户的详细信息,则执行更新操作。
最后,要消除任何信息,例如,删除网站中的用户,则执行删除操作。
要从服务器检索资源,使用 HTTP 方法 – GET(在章节 – Postman GET 请求中详细讨论)。要创建服务器中的资源,使用 HTTP 方法 – POST(在章节 – Postman POST 请求中详细讨论)。
要修改服务器中的资源,使用 HTTP 方法 – PUT(在章节 – Postman PUT 请求中详细讨论)。要删除服务器中的资源,使用 HTTP 方法 – DELETE(在章节 – Postman DELETE 请求中详细讨论)。
Postman 中的测试
只有在请求成功时才会执行 Postman 测试。如果未生成响应主体,则表示我们的请求不正确,我们将无法执行任何测试来验证响应。
在 Postman 中,测试是用 JavaScript 开发的,可以使用 JavaScript 和函数方法进行开发。这两种技术都基于 JavaScript 语言。
JavaScript 方法
按照以下步骤在 Javascript 中开发测试:
步骤 1 − 使用 JavaScript 方法开发的测试位于地址栏下的测试选项卡中。
步骤 2 − 在测试选项卡中添加以下 JavaScript 验证:
tests["Status Code should be 200"] = responseCode.code === 200 tests["Response time lesser than 10ms"] = responseTime<10
我们可以为特定请求添加一个或多个测试。
这里,tests 是一个数组类型的变量,可以保存整数、字符串、布尔值等数据类型。状态代码应为 200,响应时间小于 10 毫秒是测试的名称。建议为测试提供有意义的名称。
responseCode.code是响应中获得的响应代码,responseTime是获取响应所需的时间。
步骤 3 − 选择 GET 方法并输入端点,然后点击发送。
响应
在响应中,点击测试结果选项卡:
测试结果选项卡以绿色显示已通过的测试,以红色显示失败的测试。测试结果 (1/2) 表示两个测试中有一个已通过。
响应显示状态为 200 OK,响应时间为 129 毫秒(第二个测试检查响应时间是否小于 10 毫秒)。
因此,第一个测试通过,第二个测试失败,并出现断言错误。
函数方法
按照以下步骤使用函数方法开发测试:
步骤 1 − 使用函数方法开发的测试位于地址栏下的测试选项卡中。
步骤 2 − 在测试选项卡中添加以下代码:
pm.test["Status Code is 401"], function(){ pm.response.to.have.status(401) })
这里,pm.test是正在执行的测试的函数。状态代码为401,它是测试的名称,在执行后将在测试结果中显示。
pm.response用于获取响应并在其上添加断言以验证标头、代码、状态等。
步骤 3 − 选择 GET 方法并输入端点,然后点击发送。
响应
在响应中,点击测试结果选项卡:
测试结果选项卡以红色显示测试,因为测试已失败。测试结果 (0/1) 表示一个测试中零个测试已通过。响应显示状态为 200 OK(测试检查响应代码是否为 401)。
因此,测试显示失败,并出现断言错误。
Postman - 创建集合
已保存并组织到文件夹中的一组请求称为集合。它类似于存储库。因此,集合有助于维护 API 测试,并轻松地与团队共享它们。
创建新的集合
按照以下步骤在 Postman 中创建新的集合:
步骤 1 − 点击 Postman 应用程序中的新建图标。将弹出创建新窗口。然后点击集合链接。
步骤 2 − 将弹出创建新集合窗口。输入集合名称,然后点击创建按钮。
步骤 3 − 集合名称及其包含的请求数将显示在侧边栏的集合选项卡下。
步骤 4 − 在集合名称右侧,我们有共享、运行等可用选项。点击三个点以获取更多选项进行选择。
步骤 5 − 点击添加请求。将弹出保存请求窗口。输入请求名称,然后选择我们创建的集合。然后,点击保存到 Collection1 按钮。
步骤 6 − 集合及其请求将显示在侧边栏的集合选项卡下。
Postman - 参数化请求
我们可以参数化 Postman 请求以使用各种数据集执行相同的请求。这是借助变量和参数完成的。参数是 URL 的一部分,用于向服务器传递更多信息。
数据可以以数据文件或环境变量的形式使用。参数化是 Postman 的一项重要功能,有助于消除冗余测试。参数用双花括号 {{parameter}} 括起来。
示例
让我们以 URL 为例:https://tutorialspoint.com/index.htm。我们将创建一个名为 url 的变量,然后将其用于请求的参数化。我们可以在 Postman 中以 {{url}} 的格式引用它。
参数采用键值对的形式。因此,要指向 URL:https://tutorialspoint.com/index.htm,我们可以将其表示为 {{url}}/index.htm。因此,这里,url 是键,设置的值为 https://tutorialspoint.com
创建参数请求
按照以下步骤在 Postman 中创建参数请求:
步骤 1 − 点击 Postman 应用程序右上角环境下拉菜单右侧的眼睛图标。
步骤 2 − 点击全局部分中的编辑链接。
步骤 3 − 将弹出管理环境窗口。在变量字段中输入 URL,在初始值字段中输入 https://tutorialspoint.com。然后,点击保存。
步骤 4 − 点击关闭以转到下一个屏幕。
步骤 5 − 在 Http 请求选项卡中,在地址栏中输入{{url}}/index.htm。选择GET 方法,然后点击发送。
响应
发送请求后,我们可以在响应中看到填充的响应代码 200 OK。这表示请求成功且端点正确。
Postman - 集合运行器
Postman 集合运行程序用于一起执行包含多个请求的集合。集合中的所有请求将同时执行。集合运行程序不会生成任何响应主体。
集合运行程序控制台显示各个请求的测试结果。集合中必须包含多个请求才能使用集合运行程序。
有关如何创建集合的详细信息在创建集合章节中有详细说明。
使用集合运行程序执行测试
按照以下步骤使用 Postman 中的集合运行程序执行测试:
步骤 1 − 点击 Postman 应用程序顶部的运行程序菜单。
步骤 2 − 将出现集合运行程序屏幕。
步骤 3 − 从选择集合或文件夹中选择集合名称。
步骤 4 − 从环境下拉菜单中选择一个环境,以便在特定环境中运行请求。然后,指定我们需要迭代请求的次数。我们还可以为请求设置以毫秒为单位的延迟时间。
步骤 5 − 如果我们在文件中存在数据,则必须从数据中选择文件类型。然后,点击运行 Collection1 按钮。
步骤 6 − 运行结果页面将显示。根据提供的延迟时间,测试应该会执行。
每个迭代都将显示测试结果(通过/失败)。通过状态以绿色表示,失败状态以红色表示。如果某个特定请求没有实现测试,则将显示消息 - 此请求没有任何测试。
这是执行测试的环境,并且 Collection 名称在 Collection Runner 的顶部可见。对于每个请求,还将显示状态代码、花费时间、有效负载大小和测试验证。
Postman - 断言
断言用于验证测试执行后实际值和预期值是否匹配。如果它们不匹配,则测试将失败,我们将从测试输出中获取失败原因。
断言返回一个布尔值,即真或假。在 Postman 中,我们可以借助 JavaScript Chai 断言库在我们的测试中添加断言。它在 Postman 应用程序中自动可用。
Chai 断言易于理解,因为它们以人类可读的格式定义。Postman 中的断言写在地址栏下的测试选项卡中。
Chai 的文档可在以下链接中找到:
编写断言
让我们编写一个断言来检查某个特定文本 - Postman 是否在一个字符串数组中。
示例
pm.test["Text is present"], function(){ pm.expect(['Java', 'Postman']).to.include('Postman') })
输出
输出如下:
让我们编写一个断言来检查数组是否为空。
示例
pm.test["Array contains element"], function(){ pm.expect(['Java', 'Postman']).to.be.an('array').that.is.not .empty })
输出
输出如下:
对象验证断言
让我们使用 eql 编写一个对象验证断言。它用于比较下面示例中对象 i 和 j 的属性。
示例
pm.test("Equality", function(){ let i = { "subject" : "Postman" }; let j= { "subject" : "Cypress" }; pm.expect(i).to.not.eql(j);
输出
输出如下:
为对象 i 定义的属性是 Postman,而为 j 定义的属性是 Cypress。因此,not.eql 断言通过了。
断言类型
在 Postman 中,我们可以对响应的不同部分应用断言。这些将在下面解释:
状态代码
The assertion for status code is as follows:pm.test["Status Code is 401"], function(){ pm.response.to.have.status(401) })
如果获得的响应状态代码为 401,则上述断言通过。
pm.test["Status is Forbidden"], function(){ pm.response.to.have.property('status', ' Forbidden') })
上述断言应用于具有值 Forbidden 的响应属性 - 状态。
响应花费的时间
响应花费时间的断言如下:
pm.test("Response time above 500 milliseconds", function () { pm.expect(pm.response.responseTime).to.be.above(500) })
如果响应时间超过 500 毫秒,则上述断言通过。
响应格式的类型
响应格式类型的断言如下:
pm.test("Response type is JSON", function(){ pm.response.to.be.json; })
如果响应为 JSON 类型,则上述断言通过。
响应的头
响应头的断言如下:
pm.test("Header Content-Encoding is available", function () { pm.response.to.have.header("Content-Encoding") })
如果响应具有 Content-Encoding 头,则上述断言通过。
响应的文本
响应文本的断言如下:
pm.test("Response Text", function () { pm.expect(pm.response.text()).to.include("Tutorialspoint") })
如果响应文本包含文本 Tutorialspoint,则上述断言通过。
Postman - 模拟服务器
模拟服务器不是真实的服务器,它是为了模拟并充当真实服务器以验证 API 及其响应而创建的。如果需要验证某些响应但由于实际服务器上的安全问题而无法在 Web 服务器上获得,则通常使用这些响应。
模拟服务器的目的
创建模拟服务器的原因如下:
如果要在生产环境中使用的 API 仍在开发中,则会创建模拟服务器。
如果我们想要避免向实时数据发送请求,则会使用模拟服务器。
模拟服务器的优势
模拟服务器的优势如下:
使用示例模拟真实 API 功能。
模拟服务器可以附加到 Collection 中。
使用模拟数据验证 API。
尽早识别错误和缺陷。
在 API 发布以供实际使用之前识别 API 中的依赖项。
工程师可以使用它为概念构建原型并向高层管理人员展示。
在开发应用程序的前端时,开发人员应该对从真实服务器发送请求后将获得的响应功能有所了解。此时,模拟服务器可以提供很大的帮助。
模拟服务器创建
按照以下步骤在 Postman 中创建模拟服务器:
步骤 1 − 点击 Postman 应用程序中的新建图标。然后,点击模拟服务器。
步骤 2 − 从方法下拉菜单中选择GET,将请求路径输入为/user/home,响应代码输入为200,并输入响应主体。然后,点击下一步。
步骤 3 − 输入模拟服务器名称,然后点击创建模拟服务器按钮。
步骤 4 − 模拟服务器将与模拟 URL 一起创建。复制模拟 URL 按钮用于复制模拟链接。点击关闭按钮继续。
步骤 5 − 从无环境下拉菜单中选择模拟服务器作为环境,然后点击发送。获得的响应代码为200 OK,这意味着请求成功。
响应主体还显示消息 - 这是 Tutorialspoint 的 Postman 教程,与我们在步骤 2 中传递的响应主体相同。
步骤 6 − 可以通过点击屏幕右上角的眼睛图标获取 URL 的值。
因此,完整的请求模拟 URL 应为:https://05303abe-b842-4c47-ab8c-db2af9334f57.mock.pstmn.io/user/home(在步骤 5 中的地址栏中以 {{url}}/user/home 表示)。我们在 url 值的末尾附加了 /user/home,因为这是我们在步骤 2 中为模拟服务器设置的请求路径。
步骤 7 − 我们已经看到响应主体为文本格式。我们也可以以 JSON 格式获取响应。要实现此目的,请从保存响应下拉菜单中选择保存为示例选项。
步骤 8 − 提供示例名称,然后从响应主体部分选择 JSON。
步骤 9 − 以 JSON 格式添加以下响应主体。然后点击保存示例。
{ "name": "Tutorialspoint", "subject": "Postman" }
步骤 10 − 最后,向同一个端点发送 GET 请求,我们将收到与我们在示例请求中传递的相同的响应主体。
下图显示响应为 HTML 格式:
下图显示响应为 JSON 格式:
示例请求
按照以下步骤通过示例请求创建模拟服务器:
步骤 1 − 创建一个 Collection 并向其中添加一个请求。
有关如何创建 Collection 的详细信息在章节 - Postman 创建 Collection 中进行了详细讨论。
步骤 2 − 添加端点https://postman-echo.com/get?test=123 并发送 GET 请求。
步骤 3 − 从响应主体中,从保存响应下拉菜单中选择保存为示例选项。
步骤 4 − 给出示例名称,然后点击保存示例按钮。
步骤 5 − 点击 Collection 名称模拟服务器(我们创建的)并点击模拟选项卡。然后,点击创建模拟服务器。
步骤 6 − 创建模拟服务器弹出窗口出现。为模拟服务器提供一个名称,然后点击创建模拟服务器按钮。
请注意 - 我们可以将模拟服务器设为私有或公开。要将模拟服务器设为私有,我们必须选中将此模拟服务器设为私有复选框。然后,我们需要利用 Postman API 密钥。
步骤 7 − 将显示消息 - 模拟服务器已创建。此外,我们还将获得模拟 URL。我们可以使用复制模拟 URL 按钮复制它。然后,点击关闭。
步骤 8 − 我们创建的模拟服务器将反映在 Collection 侧边栏的模拟选项卡下。点击它。
步骤 9 − 我们将添加一个新的请求并将我们在步骤 7 中复制的 URL 粘贴到其中。要发送 GET 请求,我们将在粘贴的 URL 末尾附加值 - /get。
例如,此处生成的模拟 URL 为:https://f270f73a-6fdd-4ae2-aeae-cb0379234c87.mock.pstmn.io。
现在要发送 GET 请求,端点应为:https://f270f73a-6fdd-4ae2-aeae-cb0379234c87.mock.pstmn.io/get。
通过模拟服务器获得的响应主体与示例请求相同。
示例请求中获得的响应如下:
Postman - Cookie
Cookie 是服务器发送并在浏览器中存储的信息。一旦发送请求,服务器就会返回 Cookie。在 Postman 中,Cookie 在响应中的标头和 Cookie 选项卡下提及。
让我们对端点应用 GET 请求并查找 Cookie。
在标头选项卡中,服务器发送的 Cookie 使用键 - set-cookie 设置。
在 Cookie 选项卡中,相同的 Cookie 详细信息也将显示。
Cookie 管理
在 Postman 中,我们可以通过添加、删除和修改 Cookie 来管理 Cookie。在 Params 选项卡下,我们有 Cookie 链接来执行 Cookie 操作。
点击 Cookie 链接。将打开管理 Cookie 弹出窗口,其中所有可用的 Cookie 都存在,并且可以选择添加和删除 Cookie。
Cookie 添加
按照以下步骤在 Postman 中添加 Cookie:
步骤 1 − 点击添加 Cookie 按钮。将打开一个文本框,其中包含预先存在的值。我们可以修改其值,然后点击保存。
步骤 2 − 再次向服务器发送请求。
获取到的响应代码为 200 OK。此外,响应中的 Cookies 选项卡现在显示了新添加的 Cookie – Cookie_Postman。
通过程序访问 Cookies
无需使用 Postman 的 GUI,就可以通过编程方式处理 Cookies。要使用 Cookies,我们首先必须生成一个 Cookie 容器。它是一个包含所有 Cookies 以及访问它们的方法的对象。
Cookie 容器创建
Cookie 容器创建的语法如下所示:
const c = pm.cookies.jar();
Cookie 创建
我们可以使用 .set() 函数创建 Cookie。它接受 URL、Cookie 名称和 Cookie 值作为参数。
Cookie 创建的语法如下所示:
const c = pm.cookies.jar(); c.set(URL, name of cookie, value of cookie, callback(error, cookie));
获取 Cookie
我们可以使用 .get() 函数获取 Cookie。它接受 URL 和 Cookie 名称作为参数。它返回 Cookie 值。
获取 Cookie 的语法如下所示:
const c = pm.cookies.jar(); c.set(URL, name of cookie, value of cookie, callback(error, cookie)); c.get(URL, name of cookie, callback(error, cookie));
获取所有 Cookies
我们可以使用 .getAll() 函数获取 Cookie 容器中特定 URL 的所有 Cookies。它接受 URL 作为参数。它返回该 URL 的所有 Cookie 值。
获取所有 Cookies 的语法如下所示:
const c = pm.cookies.jar(); c.set(URL, name of first cookie, value of first cookie, callback(error, cookie)); c.set(URL, name of second cookie, value of second cookie, callback(error, cookie)); c.getAll(URL, callback(error, cookie));
删除 Cookie
我们可以使用 .unset() 函数删除 Cookie。它接受要删除的 URL 和 Cookie 名称作为参数。
删除 Cookie 的语法如下所示:
const c = pm.cookies.jar(); c.set(URL, name of cookie, value of cookie, callback(error, cookie)); c.unset(URL, name of cookie, callback(error, cookie));
删除所有 Cookies
我们可以使用 .clear() 函数删除特定 URL 的所有 Cookies。它接受 URL 作为参数。它删除该 URL 的所有 Cookie 值。
删除所有 Cookies 的语法如下所示:
const c = pm.cookies.jar(); c.set(URL, name of first cookie, value of first cookie, callback(error, cookie)); c.set(URL, name of second cookie, value of second cookie, callback(error, cookie)); c.clear(URL, callback(error, cookie));
Postman - 会话
会话是一个存储变量值的临时文件夹。它们用于当前实例,并且具有局部作用域。在 Postman 中,我们可以修改会话变量值以在团队之间共享工作区。
Postman 提供了本地会话共享功能。即使集合可以在团队之间共享,会话也永远不会共享。在团队结构中执行任务时,必须生成不同的令牌。
会话在其工作区内的用户具有局部作用域,并且他所做的任何修改都不会反映在服务器中。在 Postman 中,会话可以存储环境变量、全局变量等。
我们可以将当前值分配给集合变量以及全局和环境变量。要将当前值分配给集合,请单击集合名称旁边的三个点,然后单击“编辑”。
在“编辑集合”弹出窗口中,转到“变量”选项卡。
“当前值”对用户是本地的,并且永远不会与 Postman 的服务器同步。我们还可以用“当前值”替换或修改“初始值”。
此外,必须记住,只有当我们对变量应用“持久化”选项时,“初始值”才会受到影响。之后,它将与 Postman 的服务器同步。
Postman - Newman 概述
Newman 是 Postman 中使用的潜在命令行运行器。我们也可以从命令行执行并验证 Postman 集合。Newman 具有与 Postman 一致的功能。
我们可以像在集合运行器中一样,从 Newman 中运行集合中的请求。Newman 可以同时占用 NPM 注册表和 GitHub。我们还可以使用 Newman 执行持续集成或部署。
如果所有执行都无错误完成,Newman 将抛出一个状态代码 0。持续集成工具读取状态代码并相应地使构建失败/通过。
我们可以将标志 --bail 添加到 Newman 中,以便在测试中遇到错误时暂停,状态代码为 1。这可以被 CI 工具解释。Newman 基于 node.js 并使用 npm 作为包管理器。
Newman 安装
Newman 的安装需要 Node.js 和 npm。请按照以下步骤安装 Newman:
步骤 1:导航到链接 - https://node.org.cn/en/download/current/ 下载 Node.js。
步骤 2 - 下载完成后,执行以下命令以验证 Node.js 是否已正确安装。
在Windows中验证安装的命令如下所示:
node --v
在Linux中验证安装的命令如下所示:
node --version
下图显示系统中安装了 Node.js 的 v10.15.2 版本。
步骤 3 - npm 与 Node.js 一起分配,因此一旦我们下载了 Node.js,npm 就会默认下载。要验证 npm 是否在我们的系统中可用,请运行以下命令:
在Windows中验证安装的命令如下所示:
npm --v
在Linux中验证安装的命令如下所示:
npm --version
下图显示系统中安装了 npm 的 5.8.0 版本:
步骤 4 - 要安装 Newman,请运行以下命令:
npm install -g newman.
步骤 5 - 要验证 newman 的版本,请运行以下命令:
在Windows中验证安装的命令如下所示:
newman --v
在Linux中验证安装的命令如下所示:
newman --version
Postman - 使用 Newman 运行集合
要使用 Newman 运行集合,我们必须首先启动 Postman 应用程序,然后单击集合名称旁边的三个点。有关如何创建集合的详细信息将在“Postman 创建集合”一章中详细讨论。
运行集合
请按照以下步骤使用 Newman 运行集合:
步骤 1 - 单击“导出”。
步骤 2 - 从“导出集合”弹出窗口中选择Collection v2.1(推荐)选项。单击“导出”。
步骤 3 - 选择一个位置,然后单击“保存”。
步骤 4 - 接下来,我们将导出环境。单击“无环境”下拉列表右侧的眼睛图标。
步骤 5 - 单击“全局”部分中的“编辑”链接。
步骤 6 - “管理环境”弹出窗口出现。为“变量”字段输入 URL,为“初始值”输入https://tutorialspoint.com。然后,单击“下载为 JSON”。
最后,选择首选位置,然后单击“保存”。
步骤 7 - 将环境导出到与集合位于同一位置。
步骤 8 - 从命令行移动到存储集合和环境的目录路径。然后,执行以下命令:
newman run <"file name">.
文件名应始终用反引号括起来;否则它将被视为目录名。
Newman 的常用命令行参数
Newman 的常用命令行参数如下所示:
要在环境中执行集合,命令如下所示:
newman run <name of Collection> -e <name of Environment>
要执行多次迭代的集合,命令如下所示:
newman run <name of Collection> -n <iteration count>
要使用数据文件执行集合,命令如下所示:
newman run <name of Collection> --data <name of file> -n <iteration count> -e <name of Environment>
在请求之间配置延迟时间,命令如下所示:
newman run <name of Collection> -d <time of delay>
Postman - OAuth 2.0 授权
OAuth 2.0 是 Postman 中提供的授权技术。在这里,我们首先获取访问 API 的令牌,然后利用该令牌对请求进行身份验证。令牌用于确保用户有权访问服务器中的资源。
如果我们尝试在没有令牌的情况下访问受保护的 URL,将获取响应代码401 未授权。首先,应用程序为最终用户访问资源传递授权请求。
当应用程序允许用户访问时,它会通过提供用户信息来请求服务器的访问令牌。反过来,服务器会生成访问令牌。然后,客户端可以通过访问令牌访问受保护的数据。