Swagger + Excel Sheets,验证 REST API 的绝佳方式
Swagger 文件(又称 OpenAPI 规范)是记录 API 规范最流行的方式,而 Excel 工作表则提供了一种轻松便捷的结构化数据编写方法。任何人都可以在 Excel 工作表中编写数据,无论其编程技能如何。vREST NG(一款企业级自动化 API 测试应用程序)将两者的强大功能相结合,让您的 API 测试体验更加流畅。这种方法也称为数据驱动测试。
数据驱动测试是一种将测试数据与测试逻辑或脚本分开编写的方法。
这个过程如下:
vREST NG 使用 swagger 文件生成所有测试逻辑和示例测试数据 CSV 文件。vREST NG 从 CSV 文件中读取测试数据,并遍历 CSV 文件中可用的行,然后逐行运行迭代。在今天的这篇文章中,我们将详细介绍以下内容:
- 如何使用 swagger 文件生成测试用例。
- 如何通过 Excel 表将测试数据提供给生成的测试用例。
如何在 vREST NG 中执行数据驱动的 API 测试
为了详细说明该过程,我将以一个名为“联系人”的示例测试应用程序为例,该应用程序提供了 CRUD API。我将指导您完成以下步骤:
- 设置测试应用程序
- 下载并安装 vREST NG 应用程序
- 在 vREST NG 中执行数据驱动的 API 测试
设置测试应用程序:
如果您想按照自己的测试应用程序的说明进行操作,可以跳过此步骤。
否则,只需从此存储库链接下载示例测试应用程序。您还需要安装以下内容才能设置此示例测试应用程序:
- NodeJS(已使用 v10.16.2 测试)
- MongoDB(已使用 v3.0.15 测试)
要设置此应用程序,只需按照存储库的README文件中提到的说明进行操作。
下载并安装 vREST NG 应用程序
现在,只需通过vREST NG 网站下载并安装该应用程序即可。安装过程比较简单,但如果您需要特定操作系统的说明,可以参考此指南链接。
安装后,启动 vREST NG 应用程序并在提示时使用vREST NG Pro版本以继续操作。
现在,首先从文件系统中拖拽任意空目录到 vREST NG 工作区,创建一个项目。vREST NG 会将其视为一个项目,并将所有测试存储在该目录中。有关设置项目的更多信息,请阅读此指南链接。
为了快速入门,如果您不想遵循整个过程,只想查看最终结果。他们可以直接下载此项目目录并将其添加到 vREST NG 应用程序中。
在 vREST NG 中执行数据驱动的 API 测试
vREST NG 提供了一个快速的 3 步骤流程来执行数据驱动的 API 测试:
(a)导入Swagger文件
(b)将测试数据写入CSV文件
(c)[可选] 设置环境
现在,我们将详细了解以下步骤:
(a)导入Swagger文件
要导入 Swagger 文件,只需单击 vREST NG 应用程序左上角的导入器按钮。
将打开一个导入对话框。在此对话框中:
- 选择“Swagger”作为导入源
- 勾选该选项
Generate Data Driven Tests
。如果勾选此选项,则 vREST NG Importer 将为 swagger 文件中可用的每个 API 规范生成数据驱动的测试用例。 - 提供 Swagger 文件。本演示将使用测试应用程序存储库中的 Swagger 文件。下载 Swagger 文件
对话框窗口如下所示。现在,点击“导入”按钮继续。
到目前为止,导入过程已完成以下操作:
-
它为 Swagger 或 OpenAPI 文件中每个可用的 API 规范生成了一个测试用例。并且,还会针对 Swagger 文件中每个可用的标签生成测试套件。
-
它根据您的 swagger 文件自动为每个测试用例创建了具有所需列的示例 CSV 文件,如下图所示。
我们将在本文后面详细讨论如何填写此 Excel 表。
-
生成的 CSV 文件也会自动链接,如下图所示。
因此,在每次执行测试用例之前,测试用例都会从链接的 CSV 文件中读取数据,并将其转换为 JSON 格式,并存储在名为 data 的变量中。现在,测试用例将迭代接收到的数据并运行迭代。因此,如果您对 CSV 文件进行了更改,只需再次运行测试用例即可。测试用例将始终获取 CSV 文件的最新状态。无需反复导入。
-
它已根据 Swagger 文件中提供的 API 定义自动在 API 请求参数中插入一些变量。这些变量值将自动从链接的 CSV 文件中获取。
-
它还自动添加了响应验证逻辑。在下图中,状态码断言用于验证 API 响应的状态码。带有默认验证器断言的文本主体会将预期的响应主体与实际的响应主体进行比较。带有默认模式验证器断言的文本主体会通过 JSON 模式验证 API 响应。
预期状态代码将从链接的 CSV 文件中提取。
并且预期的响应主体也将从链接的 CSV 文件中提取。
并且还从链接的 CSV 文件中提取了预期的模式名称。
-
它已导入“配置”选项卡中“模式”部分中的所有 swagger 模式定义。
您可以在“预期模式”选项卡中引用这些模式定义,如前所述。在 CSV 文件中,您只需在expectedSchema列中为测试迭代指定相应的模式名称即可。
(b)将测试数据写入CSV文件
我们已经看到了导入过程中生成的数据文件。让我再次向您展示创建联系人 API 生成的文件:
在此示例文件中,您可以添加与创建联系人 API 的各个迭代相关的测试数据。在 iterationSummary 列中,只需提供迭代的有意义的摘要即可。此迭代摘要将显示在 vREST NG 应用程序的“结果”选项卡中。您需要自行填写这些测试数据。您甚至可以通过任何外部脚本生成这些测试数据。
现在,让我们在链接的 CSV 文件中添加一些测试迭代。
使用上述 CSV 文件,我们正在检查创建联系人 API 的两个测试条件:
- 当名称字段为空时
- 并且当名称字段长度大于35个字符的限制时。
在上面的 CSV 文件中,我们故意将 expectedBody 列留空。我们不需要填写此列。我们可以通过 vREST NG 应用程序本身生成此列的值。
在执行测试用例之前,我们需要在配置选项卡中配置测试应用程序的 baseURL 变量,如下所示:
在本节中,您可以使用变量配置各种环境,如 prod、dev、staging 及其配置。
现在,让我们在 vREST NG 应用程序中执行此测试。两次迭代均失败,因为预期的响应主体与实际的响应主体不匹配,如下图所示:
现在,每次迭代时单击“将实际复制到预期”按钮。vREST NG 将直接将实际响应主体复制到链接的 CSV 文件中的 expectedBody 列。
完成此操作后,如果您再次查看 CSV 文件,您会看到 vREST NG 已为您填充了 expectedBody 列,如下图所示。
注意:如果您已在 Microsoft Excel 中打开此 CSV 文件,则需要关闭该文件并重新打开才能反映更改。但某些代码编辑器(例如 VS Code)会自动检测文件系统上的更改并实时反映。
现在,如果您再次执行测试,您会看到测试迭代现在已通过。
您还可以看到所选测试迭代的预期响应与实际响应:
您可以通过执行选项卡查看所选迭代的执行详细信息:
因此,您可以通过 CSV 文件执行 API 的测试迭代。只需在 CSV 文件中添加迭代,然后直接在 vREST NG 应用程序中运行即可。无需反复导入。一切都无缝衔接。因此,它能够显著提高您的测试效率和生产力。
(c)[可选] 设置环境
对于生成的步骤,您可能还需要在执行测试之前设置初始应用程序或数据库状态。这样您就可以以自动化的方式执行回归分析。设置初始状态的一些用例如下:
- 从备份恢复数据库状态
- 执行外部命令或脚本
- 调用 REST API 来设置初始状态
现在让我们看看如何执行外部命令或从备份中恢复数据库状态。假设在我们的示例测试应用程序中,我们已经进行了数据库转储,并且希望在执行测试用例之前恢复该转储。由于我们在示例测试应用程序中使用 MongoDB,因此我们可以使用 mongorestore 命令来实现我们的目的。
您可以如下图所示指定命令:
上述命令将从 vREST NG 项目目录 >> dumps 文件夹中已有的备份中恢复数据库。
注意:确保 mongorestore 命令在您的 PATH 中,否则您将需要提供该命令的完整路径。
我希望大家能就此方法提出反馈,无论您觉得它是否适合您的 API 测试需求。如果您觉得这篇文章有帮助,请点赞。如果您需要任何帮助,或者想免费使用 vREST NG Pro 版本,请随时联系我。
鏂囩珷鏉ユ簮锛�https://dev.to/dheerajaggarwal/swagger-excel-sheets-a-wonderful-way-of-validating-rest-apis-4mm9