编译整理|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
3.已开源!一款支持HarmonyOS NEXT系统的UI自动化框架hmdriver2发布