首页 >web前端 >js教程 >掌握 Cypress API 测试:带有示例的综合指南

掌握 Cypress API 测试:带有示例的综合指南

DDD
DDD原创
2024-12-27 10:48:10146浏览

应用程序编程接口,通常称为 API,是软件开发生命周期的一个重要方面,不仅从开发的角度来看,而且从测试的角度来看。这些 API 促进不同系统之间的交互以交换数据。因此,彻底测试这些 API 以确保应用程序的无缝运行变得极其重要。

在本文中,我们将探索使用 Cypress 测试框架进行 API 测试,并了解如何自动化 API 来进行高效测试。我们将在本文中介绍以下几点 -

API 测试概述

API 测试涉及向后端服务器发送 HTTP 请求(无论是 GET、POST、PUT、DELETE(或其他方法))并检索响应。一旦检索到响应,就会对其进行验证以确保已收到预期值。下面列出了 API 测试的一些关键方面

  • 验证状态代码 – 对响应中的状态代码进行验证,以确保收到所需的状态代码。例如,需要 200 个状态代码才能确保成功。您可以参考 wiki 文档中用于 HTTP 请求的其他标准状态代码。
  • 响应正文断言 – 验证 HTTP 响应正文,以确保 XML 或 JSON 包含预期数据并具有正确的结构。
  • 测试请求参数 – 通过在参数和标头中传递不同的值来验证 API 的行为。
  • 身份验证和授权 - 验证正确的身份验证机制和安全方面。 在测试 API 时,考虑上述几点以确保 API 的端到端功能没有错误。

利用 Cypress 进行 API 测试

Cypress 是一种流行的前端测试工具,用于浏览器和端到端自动化测试。 Cypress 具有网络请求功能,这使其成为 API 测试的不错选择。 Cypress 为 API 测试提供的一些关键功能是 -

  • 语法熟悉 – 与 UI 测试类似,Cypress API 命令使用相同的 .should() 和 .then() 语法。
  • 内置断言 –我们可以轻松地使用 Cypress 提供的断言来断言 API 请求的状态代码、标头甚至响应正文。
  • 重试失败的请求 –Cypress 会自动重试失败的请求,以确保不存在网络或其他类似问题。

详细的文档 –Cypress 拥有详细记录的请求和断言,可以轻松获得运行支持。

Cypress API 测试的主要特点

Cypress 具有多种功能,可帮助您有效且高效地执行 API 测试。下面讨论一些功能 -

  • cy.wait() – 提供等待网络请求的机制,并帮助加载异步数据。
  • cy.route() – 帮助将测试请求路由到特定处理程序。
  • cy.server() – 帮助维护测试套件的整个服务器。
  • 测试运行者 – 帮助并行执行测试以实现快速周转时间。
  • cy.login() – 通过在调用之前使用单个命令设置授权标头来帮助发出安全的 API 请求。
  • cy.intercept() – 控制响应,或通过拦截请求来模拟行为。 有了这些功能,用户就可以非常轻松方便地开始编写具有增强功能和高效框架的 API 测试。

现在我们了解了 Cypress 如何帮助自动化我们的 API,让我们使用 Cypress 编写一个简单的 API 测试。但在此之前,您需要确保满足以下先决条件 -

  • 安装 Visual Studio 等 IDE(这是最常用的 IDE,但您也可以参考其他 IDE,例如 IntelliJ)
  • 在系统中安装 Node.js 现在让我们逐步完成使用 Cypress 编写第一个 API 测试的步骤。

使用 Cypress 编写第一个 API 测试

在本文中,我们将介绍使用 GET、POST、PUT 和 DELETE 方法发送 HTTP 请求的简单场景。但在开始编写测试脚本之前,我们将设置环境。

  1. 在您的系统本地创建一个文件夹,我在我的系统中创建了一个名为 CypressAPITests 的文件夹。

Mastering Cypress API Testing: A Comprehensive Guide with Examples

柏树 API
2.接下来,打开 Visual Studio Code 编辑器并打开在步骤 #1 中创建的文件夹。

Mastering Cypress API Testing: A Comprehensive Guide with Examples

3.现在您已经打开了该文件夹,下一步是设置节点项目。为此,请在终端中使用命令 npm init -y,这将创建一个 package.json 文件。

Mastering Cypress API Testing: A Comprehensive Guide with Examples

4.现在,我们将使用命令 npx cypress install 从终端安装 Cypress(如果尚未安装)。

Mastering Cypress API Testing: A Comprehensive Guide with Examples

5.现在,我们将为测试创建配置文件,为此,我们将在终端中运行命令 npx cypress open。

Mastering Cypress API Testing: A Comprehensive Guide with Examples

6. Cypress 工具打开后,选择 E2E 测试。

Mastering Cypress API Testing: A Comprehensive Guide with Examples

7.单击下一个屏幕上的“继续”。

8.配置文件设置完成后,返回 Visual Studio Code 编辑器,您将看到配置文件已创建。

Mastering Cypress API Testing: A Comprehensive Guide with Examples

9.至此Cypress已经安装成功,环境也已经搭建完毕。我们现在将开始编写测试。

我们将使用一些虚拟 API 调用来演示 Cypress API 自动化。

在 Visual Studio Code 编辑器中,在 Cypress 目录下创建一个文件夹 e2e。在 e2e 文件夹下,您可以创建另一个名为 APITests 的文件夹。请注意,您可以根据需要选择文件夹名称。

现在我们将开始编写我们的第一个测试文件。我们将在 APITests 文件夹下创建一个文件。我们将其命名为 HttpGetRequest。该文件名的扩展名为 .cy.js,如下面的快照所示 -

Mastering Cypress API Testing: A Comprehensive Guide with Examples
现在我们开始编写主要代码。在此之前,让我们看一下请求的基本语法 -

cy.request(METHOD,url,body)

在使用 Cypress 发出的请求中,url 是必填参数,但 Method 和 body 等其他参数是可选的。您可以查看 Cypress 官方文档中的不同请求语法,以更好地了解我们如何以不同的方式使用它。

在我们的示例场景中,我们将使用 GET 方法来获取一些资源,因此我们将使用 Method 和 url 作为 cy.request 的参数。

cy.request('GET','https://dummy.restapiexample.com/api/v1/employees')
此命令将对服务器进行 API 调用。

接下来,我们将断言一些响应值,例如状态代码。

.its('状态')
.should('等于',200);
这行代码将验证响应状态代码并断言其值为 200。

让我们看看这段代码组合在一起后的样子:

描述('HTTPGet',()=>{

it('GET 请求',()=>{

cy.request('GET','https://dummy.restapiexample.com/api/v1/employees')
.its('状态')
.should('等于',200);

})

})
编写完 GET 请求的代码后,我们将执行相同的操作。要执行它,我们可以使用两种方式中的任何一种 -

  1. 通过终端执行
  2. 通过Cypress工具执行 我们将一一看看如何执行。

通过终端执行

要通过终端执行 Cypress 代码,请打开终端窗口并简单地传递命令:

npx cypress run –spec“文件路径”

在上面的命令中,文件路径是您要执行的文件的相对路径。下面的快照显示了 HTTPGetRequest 文件在我的系统上的执行情况 -

Mastering Cypress API Testing: A Comprehensive Guide with Examples

可以看到测试执行成功,我们的API测试已经通过了。

现在让我们尝试通过 Cypress Tool 执行相同的测试。

通过 Cypress 工具执行

1.只需编写命令 npx cypress open 即可打开该工具。

  1. 看到工具窗口打开后,单击“E2E 测试”。

Mastering Cypress API Testing: A Comprehensive Guide with Examples

  1. 现在选择任意浏览器。我选择 Electron。

Mastering Cypress API Testing: A Comprehensive Guide with Examples

  1. 您将看到 Electron 浏览器打开,并显示我们编写的 Visual Studio Code 规范。

Mastering Cypress API Testing: A Comprehensive Guide with Examples

  1. 选择 HttpGetRequest,您将看到执行开始并显示日志。

Mastering Cypress API Testing: A Comprehensive Guide with Examples

您已经执行了第一个 Cypress API 自动化测试。我们现在将增强代码以执行其他几个 HTTP 方法。

POST 方法

执行 POST HTTP 请求的代码-

描述('HTTPGet',()=>{

it('POST 请求',()=>{
cy.request({
方法:'POST',
url: 'https://dummy.restapiexample.com/api/v1/create',
正文:{
"name":"测试帖子",
"工资":"1234",
"年龄":"23"

}
})
.its('状态')
.should('等于',200);
})
})
执行上述代码后,日志将显示执行结果,如下所示-

Mastering Cypress API Testing: A Comprehensive Guide with Examples
在接下来的演示中,我们将使用另一个假 API 集合,并了解 HTTP 请求方法如何为它们工作。

PUT 方法

执行 PUT HTTP 请求的代码-

描述('HTTPPut',()=>{

it('PUT 请求',()=>{
cy.request({
方法: 'PUT',
url: 'https://jsonplaceholder.typicode.com/posts/1',
正文:{
id: 1,
title: '这是 PUT 更新',
body: '这是 PUT 更新正文',
用户 ID: 1,
}
})
.its('状态')
.should('等于',200) ;
})
})

上面代码的执行结果显示在下面-

Mastering Cypress API Testing: A Comprehensive Guide with Examples

删除方法

执行删除 HTTP 请求的代码(请注意,我在上面使用的同一示例中附加了以下代码段)-

it('删除请求',()=>{
cy.request({
方法:'删除',
url: 'https://jsonplaceholder.typicode.com/posts/1',
})
.its('状态')
.should('等于',200) ;
})
由于 PUT 和 DELETE 请求都在同一个文件中,因此这两个方法都被执行,结果如下所示 -

Mastering Cypress API Testing: A Comprehensive Guide with Examples
所以,就是这样,您现在知道如何使用 Cypress 执行不同方法的基本 HTTP 请求。您现在可以继续尝试在您的项目中实施 Cypress API 测试,看看您能够如何轻松地以快速周转时间测试 API。

结论

在了解了 API 和 Cypress 的 API 测试基础知识后,我们得出以下几点结论 -

  1. Cypress API 测试提供了一组强大的工具,可帮助您熟悉 Cypress 的 UI 测试语法。
  2. 我们可以方便地使用断言来验证响应状态代码和任何其他响应参数。

来源:本文最初发表于 testgrid.io。

以上是掌握 Cypress API 测试:带有示例的综合指南的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn