应用程序编程接口,通常称为 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 请求的简单场景。但在开始编写测试脚本之前,我们将设置环境。
- 在您的系统本地创建一个文件夹,我在我的系统中创建了一个名为 CypressAPITests 的文件夹。
柏树 API
2.接下来,打开 Visual Studio Code 编辑器并打开在步骤 #1 中创建的文件夹。
3.现在您已经打开了该文件夹,下一步是设置节点项目。为此,请在终端中使用命令 npm init -y,这将创建一个 package.json 文件。
4.现在,我们将使用命令 npx cypress install 从终端安装 Cypress(如果尚未安装)。
5.现在,我们将为测试创建配置文件,为此,我们将在终端中运行命令 npx cypress open。
6. Cypress 工具打开后,选择 E2E 测试。
7.单击下一个屏幕上的“继续”。
8.配置文件设置完成后,返回 Visual Studio Code 编辑器,您将看到配置文件已创建。
9.至此Cypress已经安装成功,环境也已经搭建完毕。我们现在将开始编写测试。
我们将使用一些虚拟 API 调用来演示 Cypress API 自动化。
在 Visual Studio Code 编辑器中,在 Cypress 目录下创建一个文件夹 e2e。在 e2e 文件夹下,您可以创建另一个名为 APITests 的文件夹。请注意,您可以根据需要选择文件夹名称。
现在我们将开始编写我们的第一个测试文件。我们将在 APITests 文件夹下创建一个文件。我们将其命名为 HttpGetRequest。该文件名的扩展名为 .cy.js,如下面的快照所示 -
现在我们开始编写主要代码。在此之前,让我们看一下请求的基本语法 -
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 请求的代码后,我们将执行相同的操作。要执行它,我们可以使用两种方式中的任何一种 -
- 通过终端执行
- 通过Cypress工具执行 我们将一一看看如何执行。
通过终端执行
要通过终端执行 Cypress 代码,请打开终端窗口并简单地传递命令:
npx cypress run –spec“文件路径”
在上面的命令中,文件路径是您要执行的文件的相对路径。下面的快照显示了 HTTPGetRequest 文件在我的系统上的执行情况 -
可以看到测试执行成功,我们的API测试已经通过了。
现在让我们尝试通过 Cypress Tool 执行相同的测试。
通过 Cypress 工具执行
1.只需编写命令 npx cypress open 即可打开该工具。
- 看到工具窗口打开后,单击“E2E 测试”。
- 现在选择任意浏览器。我选择 Electron。
- 您将看到 Electron 浏览器打开,并显示我们编写的 Visual Studio Code 规范。
- 选择 HttpGetRequest,您将看到执行开始并显示日志。
您已经执行了第一个 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);
})
})
执行上述代码后,日志将显示执行结果,如下所示-
在接下来的演示中,我们将使用另一个假 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) ;
})
})
上面代码的执行结果显示在下面-
删除方法
执行删除 HTTP 请求的代码(请注意,我在上面使用的同一示例中附加了以下代码段)-
it('删除请求',()=>{
cy.request({
方法:'删除',
url: 'https://jsonplaceholder.typicode.com/posts/1',
})
.its('状态')
.should('等于',200) ;
})
由于 PUT 和 DELETE 请求都在同一个文件中,因此这两个方法都被执行,结果如下所示 -
所以,就是这样,您现在知道如何使用 Cypress 执行不同方法的基本 HTTP 请求。您现在可以继续尝试在您的项目中实施 Cypress API 测试,看看您能够如何轻松地以快速周转时间测试 API。
结论
在了解了 API 和 Cypress 的 API 测试基础知识后,我们得出以下几点结论 -
- Cypress API 测试提供了一组强大的工具,可帮助您熟悉 Cypress 的 UI 测试语法。
- 我们可以方便地使用断言来验证响应状态代码和任何其他响应参数。
来源:本文最初发表于 testgrid.io。
以上是掌握 Cypress API 测试:带有示例的综合指南的详细内容。更多信息请关注PHP中文网其他相关文章!

引言我知道你可能会觉得奇怪,JavaScript、C 和浏览器之间到底有什么关系?它们之间看似毫无关联,但实际上,它们在现代网络开发中扮演着非常重要的角色。今天我们就来深入探讨一下这三者之间的紧密联系。通过这篇文章,你将了解到JavaScript如何在浏览器中运行,C 在浏览器引擎中的作用,以及它们如何共同推动网页的渲染和交互。JavaScript与浏览器的关系我们都知道,JavaScript是前端开发的核心语言,它直接在浏览器中运行,让网页变得生动有趣。你是否曾经想过,为什么JavaScr

Node.js擅长于高效I/O,这在很大程度上要归功于流。 流媒体汇总处理数据,避免内存过载 - 大型文件,网络任务和实时应用程序的理想。将流与打字稿的类型安全结合起来创建POWE

Python和JavaScript在性能和效率方面的差异主要体现在:1)Python作为解释型语言,运行速度较慢,但开发效率高,适合快速原型开发;2)JavaScript在浏览器中受限于单线程,但在Node.js中可利用多线程和异步I/O提升性能,两者在实际项目中各有优势。

JavaScript起源于1995年,由布兰登·艾克创造,实现语言为C语言。1.C语言为JavaScript提供了高性能和系统级编程能力。2.JavaScript的内存管理和性能优化依赖于C语言。3.C语言的跨平台特性帮助JavaScript在不同操作系统上高效运行。

JavaScript在浏览器和Node.js环境中运行,依赖JavaScript引擎解析和执行代码。1)解析阶段生成抽象语法树(AST);2)编译阶段将AST转换为字节码或机器码;3)执行阶段执行编译后的代码。

Python和JavaScript的未来趋势包括:1.Python将巩固在科学计算和AI领域的地位,2.JavaScript将推动Web技术发展,3.跨平台开发将成为热门,4.性能优化将是重点。两者都将继续在各自领域扩展应用场景,并在性能上有更多突破。

Python和JavaScript在开发环境上的选择都很重要。1)Python的开发环境包括PyCharm、JupyterNotebook和Anaconda,适合数据科学和快速原型开发。2)JavaScript的开发环境包括Node.js、VSCode和Webpack,适用于前端和后端开发。根据项目需求选择合适的工具可以提高开发效率和项目成功率。

是的,JavaScript的引擎核心是用C语言编写的。1)C语言提供了高效性能和底层控制,适合JavaScript引擎的开发。2)以V8引擎为例,其核心用C 编写,结合了C的效率和面向对象特性。3)JavaScript引擎的工作原理包括解析、编译和执行,C语言在这些过程中发挥关键作用。


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

SublimeText3 英文版
推荐:为Win版本,支持代码提示!

ZendStudio 13.5.1 Mac
功能强大的PHP集成开发环境

螳螂BT
Mantis是一个易于部署的基于Web的缺陷跟踪工具,用于帮助产品缺陷跟踪。它需要PHP、MySQL和一个Web服务器。请查看我们的演示和托管服务。

Dreamweaver CS6
视觉化网页开发工具

mPDF
mPDF是一个PHP库,可以从UTF-8编码的HTML生成PDF文件。原作者Ian Back编写mPDF以从他的网站上“即时”输出PDF文件,并处理不同的语言。与原始脚本如HTML2FPDF相比,它的速度较慢,并且在使用Unicode字体时生成的文件较大,但支持CSS样式等,并进行了大量增强。支持几乎所有语言,包括RTL(阿拉伯语和希伯来语)和CJK(中日韩)。支持嵌套的块级元素(如P、DIV),