使用Swagger和Excel工作表验证REST API
Swagger Files (又称OpenAPI规范 )是记录API规范的最流行方法,而Excel工作表提供了一种简便的方式来写入结构化数据。 任何人都可以在excel工作表中写数据,而不管他们的编程技能如何。 引入vREST NG (用于自动API测试的企业级应用程序),该功能结合了两者的强大功能,使您的API测试体验更加无缝。 该方法也称为数据驱动测试 。
数据驱动测试是一种将测试数据与测试逻辑或脚本分开编写的方法。
因此,该过程如下所示:
vREST NG使用swagger文件生成所有测试逻辑和样本测试数据CSV文件。 vREST NG从CSV文件读取测试数据,并在CSV文件中可用的行上进行迭代,并逐一运行迭代。 今天在这篇文章中,我们将详细研究以下内容:
- 您如何使用swagger文件生成测试用例。
- 您如何通过Excel工作表将测试数据提供给那些生成的测试用例。
如何在vREST NG中执行数据驱动的API测试
为了详细说明该过程,我将使用一个名为Contacts应用程序的示例测试应用程序,该应用程序提供CRUD API。 我将指导您完成以下步骤:
- 设置测试应用程序
- 下载并安装vREST NG应用程序
- 在vREST NG中执行数据驱动的API测试
设置测试应用程序
如果要遵循自己的测试应用程序的说明,则可以跳过此步骤。
否则,只需从此存储库链接下载示例测试应用程序。 该应用程序是基于NodeJS的应用程序,并已通过NodeJS v10.16.2进行了测试。
要设置此应用程序,只需遵循存储库的README文件中提到的说明。
下载并安装vREST NG应用程序
现在,只需通过vREST NG网站下载该应用程序并安装。 安装很简单,但是如果您需要特定于操作系统的说明,则可以按照此指南链接进行操作 。
安装后,启动vREST NG应用程序并在出现提示时使用vREST NG Pro版本,以继续进行操作。
现在,首先通过从vREST NG工作区区域中的文件系统中拖动任何空目录来设置项目。 vREST NG会将其视为一个项目,并将所有测试存储在该目录中。 有关设置项目的更多信息,请阅读此指南链接 。
为了快速入门,如果您不想遵循整个过程,而只想查看最终结果。 他们可以直接下载此项目目录并将其添加到vREST NG应用程序中。
在vREST NG中执行数据驱动的API测试
vREST NG提供了一个快速的三步过程来执行数据驱动的API测试:
- A)导入Swagger文件A
- B)将测试数据写入CSV文件
- C)安装环境
现在,让我们详细了解这些步骤。
A)导入Swagger文件
要导入Swagger文件,只需单击vREST NG应用程序左上角的“导入器”按钮。
导入对话框窗口将打开。 在此对话框窗口中:
- 选择
Swagger
作为导入源 - 勾选选项
Generate Data Driven Tests
。 如果选中此选项,则vREST NG Importer将为svagger文件中可用的每个API规范生成数据驱动的测试用例。 - 提供招摇文件。 对于此演示,我将使用测试应用程序存储库中的swagger文件。 下载Swagger文件
对话框窗口将如下所示。 现在,单击导入按钮以继续。
到目前为止,导入过程已完成以下操作:
1.它为Swagger或OpenAPI文件中可用的每个API规范生成了一个测试用例。 然后针对swagger文件中可用的每个标记生成测试套件。
2.它将根据您的表格文件自动为每个测试用例创建带有所需列的示例CSV文件,如下图所示。
稍后,我将详细讨论如何填写此excel工作表。
3.生成的CSV文件也将自动链接,如下图所示。
因此,在执行每个测试用例之前,测试用例将从链接的CSV文件中读取数据,并将其转换为JSON格式,并将其存储在名为data的变量中。 现在,测试用例将遍历接收到的数据并运行迭代。 因此,如果您更改了CSV文件,则只需再次运行测试用例即可。 测试用例将始终获取CSV文件的最新状态。 无需一次又一次地导入 。
4.根据swagger文件中可用的API定义,它已自动在API请求参数中插入了一些变量。 这些变量值将自动从链接的CSV文件中提取。
5.它还自动添加了响应验证逻辑。 在下图中,状态代码断言用于验证API响应的状态代码。 具有默认验证器断言的文本主体将预期的响应主体与已执行的API测试用例的实际响应主体进行比较。 具有默认模式验证器断言的文本主体通过JSON模式验证API响应结构。
预期的状态代码将从链接的CSV文件中提取。
预期的响应主体也将从链接的CSV文件中提取。
并且还从链接的CSV文件中提取了所需的架构名称。
6.它已在“ Configuration tab
可用的“ Schemas
部分中导入了所有swagger模式定义。
您可以在前面讨论的“期望模式”选项卡中引用这些模式定义。 在CSV文件中,您只需在ExpectedSchema列中为测试迭代指定相应的架构名称即可。
B)将测试数据写入CSV文件
正如我们已经看到的,导入过程中生成的数据文件。 让我再次为您显示创建联系人API的生成文件:
在此示例文件中,您可以为Create Contact API添加与各种迭代相关的测试数据。 在erationSummary列中,只需为您的迭代提供有意义的摘要。 该迭代摘要将显示在vREST NG应用程序的“结果”选项卡中。 您将需要自己填写此测试数据。 您甚至可以通过任何外部脚本生成此测试数据。
现在,让我们在链接的CSV文件中添加一些测试迭代。
使用上面的CSV文件,我正在检查Create Contact API的两个测试条件:
- 当名称字段为空时
- 并且当名称字段的长度大于35个字符的限制时。
在上面的CSV文件中,我有意地将ExpectedBody列留为空白。 我不需要填写此列。 我可以通过vREST NG应用程序本身生成此列的值。
在执行测试用例之前,我需要在“配置”选项卡中配置测试应用程序的baseURL变量,如下所示:
在本部分中,您可以使用变量配置各种环境,例如prod , dev , staging等,以及它们的配置。
现在,让我们在vREST NG Application中执行此测试。 两次迭代均失败,因为预期响应主体与实际响应主体不匹配,如下图所示:
现在,对于每个迭代,单击按钮“ Copy Actual to Expected
”。 vREST NG将直接将实际响应正文复制到链接的CSV文件中的ExpectedBody列。
现在,在此操作之后,如果您再次查看CSV文件。 您可以看到,vREST NG已为您填充了ExpectedBody列,如下图所示。
注意:如果您已在Microsoft Excel中打开此CSV文件,则需要关闭该文件并再次打开以反映所做的更改。 但是某些代码编辑器(例如VS Code)会自动检测文件系统上的更改并实时反映出来。
现在,如果再次执行测试,则可以看到测试迭代正在通过。
您可能还会看到所选测试迭代的expected vs actual response
:
通过转到执行选项卡,您可能会看到所选迭代的执行详细信息:
因此,通过这种方式,您可以通过CSV文件为API执行测试迭代。 只需在CSV文件中添加迭代,然后直接在vREST NG应用程序中运行即可。 无需一次又一次地导入。 一切都无缝地进行。 因此,它可以大大提高测试效率和生产率 。
C)安装环境
对于生成的步骤,您可能还需要在执行测试之前设置初始应用程序状态或数据库状态。 这样您就可以自动执行回归。 设置初始状态的一些用例可以是:
- 从备份还原数据库状态
- 执行外部命令或脚本
- 调用REST API设置初始状态
在本节中,让我们来看一下如何在执行测试之前执行外部命令。 由于我们的示例测试应用程序很简单,并且构建用于演示vREST NG。 它将所有联系人数据存储在JSON文件中。 因此,我已经在JSON文件中保存了初始数据,可以在执行测试用例之前将其复制到测试应用程序项目目录中。
您可以指定命令,如下图所示:
上面的命令将从vREST NG Project目录>> dump.json文件中已经存在的初始数据中恢复应用程序状态。
注意:您还需要在“ Environments
部分中指定cpCmd
变量,因为在Linux / MacOS中,命令名称是cp
,对于Windows OS,命令名称是copy
。 因此,对于Windows OS,您可以在vREST NG应用程序中创建另一个环境。 这样您的API测试只需切换环境即可在任何计算机上运行。
无论您是否认为此方法对您的API测试需求都有用,我希望每个人都能收到关于此方法的反馈。 如果您觉得这篇文章有帮助,请喜欢。 如果您需要任何帮助或想要免费使用vREST NG Pro版本,请随时与我联系 。 您的反馈意见对于我进一步提高至关重要。