利用Cypress建立自动化项目:重复任务系统案例研究

文摘   2024-10-21 13:05   上海  

编译整理|TesterHome社区

作者|Mohamed Said Ibrahim


以下为作者观点:


在当今快节奏的开发环境中,自动化测试已成为确保软件质量和效率的必要条件。在各种测试框架中,Cypress 以其速度、可靠性和易用性脱颖而出。本文探讨如何使用 Cypress 建立强大的自动化项目,重点关注重复任务系统 (RTS) 作为被测系统 (SUT)。


有关Cypress


Cypress 是一个专为现代 Web 应用程序设计的开源测试框架。与其他测试框架不同,Cypress 直接在浏览器中运行,提供与应用程序的实时交互并立即反馈测试结果。其强大的功能(包括自动等待、时间旅行调试和易于设置)使其成为许多开发人员和测试人员的首选。

设置 Cypress 项目


步骤1:先决条件


在使用 Cypress 进行自动化之前,请确保满足以下先决条件:


• Node.js:确保已安装 Node.js(最好是版本 12 或更高版本)。

• Cypress:使用 npm 安装 Cypress,命令如下:

npm install cypress - save-dev



步骤2:项目结构


建立清晰的项目结构。以下是推荐的布局:

/your-project
├── cypress
│ ├── fixtures
│ ├── integration
│ ├── plugins
│ └── support
├── cypress.json
└── package.json


• Fixtures:用于测试数据和模拟 API。

• 集成:适合你的测试规格。

• 插件:用于扩展 Cypress 功能。

• 支持:可重复使用的功能和配置。



步骤3:配置


通过编辑 cypress.json 文件来配置 Cypress。设置基本 URL 以及项目所需的任何其他全局配置:

{ 
“baseUrl” “http://your-repetitive-task-system-url.com”
“viewportWidth” 1280
“viewportHeight” 720
}


编写第一个测试


步骤4:创建测试用例


让我们以重复任务系统为例。该系统自动执行常见任务,例如发送电子邮件、生成报告和管理日程安排。以下是如何编写第一个测试用例。


创建测试文件:在集成文件夹中,创建一个名为 repetitive_task_spec.js 的文件。


编写一个简单的测试:下面是一个检查登录功能是否有效的测试用例示例:

describe('Repetitive Task System', () => {
it('should log in successfully', () => {
cy.visit('/login'); // Navigate to the login page
cy.get('input[name="username"]').type('testuser'); // Type username
cy.get('input[name="password"]').type('password'); // Type password
cy.get('button[type="submit"]').click(); // Click login
cy.url().should('include', '/dashboard'); // Assert user is redirected to dashboard
});
});


步骤 5:运行测试


要运行测试,请在终端中执行以下命令:


npx cypress open


这将启动 Cypress Test Runner,可以在其中选择并运行测试文件。


Cypress 自动化的最佳实践


使用 Fixtures 存储测试数据:将常见测试数据存储在 Fixtures 中,以保持测试的整洁和可维护性。使用 cy.fixture() 加载 Fixtures。


利用 Cypress 命令:为常用操作创建自定义命令,以增强代码可重用性。可以在 support/commands.js 文件中添加自定义命令。


使用 Before Hooks:利用 before() 和 beforeEach() 钩子为测试设置先决条件,减少代码重复。


实现错误处理:使用 Cypress 内置的重试功能和自动等待功能有效地处理异步操作。


持续集成:将 Cypress 与 CI/CD 管道(例如 GitHub Actions、Jenkins)集成,以确保测试在每次代码更改时自动运行。


探索高级功能


1. API 测试


Cypress 允许进行 API 测试和 UI 测试。可以使用 cy.request() 来测试您的后端端点:


it( '应该获取用户数据' , () => { 
cy.request( 'GET' , '/api/users/1' ).then((response) => {
expect(response.status).to.e q(200) ;
expect(response.body).to.have.property( 'name' , 'John Doe' );
});
});


2. 视觉测试


使用 cypress-image-snapshot 等插件集成视觉测试,以比较更改前后的 UI 组件,确保一致性。


3. 仪表板服务


使用 Cypress Dashboard Service 进行详细的测试分析,包括测试运行的屏幕截图和视频,这对于调试非常有价值。


结论


使用 Cypress 建立强大的自动化项目需要周到的设置、结构化的测试和遵循最佳实践。通过专注于重复任务系统作为 SUT,大家可以利用 Cypress 的功能来确保应用程序平稳高效地运行。随着你对 Cypress 越来越熟悉,探索其高级功能以增强自动化工作,从而缩短反馈周期并提高软件质量。(原文链接:https://medium.com/@muhammedsaidsyed215/how-to-establish-a-powerful-automation-project-with-cypress-a-case-study-on-a-repetitive-task-d67da2c57af2)




1.自动化测试框架|我们为什么抛弃Selenium选择Playwright

2.十个AI驱动的软件测试自动化工具,你尝试过吗?

3.已开源!一款支持HarmonyOS NEXT系统的UI自动化框架hmdriver2发布

4.测试团队FastGPT实战,解锁AI大模型知识库搭建秘籍

5.MTSC2024上海大会,现场录播视频

6.AI测试|自己搭一个AI Agent玩玩


TesterHome社区
测试之家(TesterHome)由一线测试工程师发起和运营的测试技术社区,社区主旨是公益、开源、分享、落地,紧跟前沿技术趋势,致力于推进软件质量保障与安全,是软件质量保障领域的风向标。我们的理念:Coding Share Show Cool
 最新文章