前言
Cypress 是目前非常流行的前端自动化测试工具,其优势在于可实现端到端测试并提供了友好的交互式 UI。本文将介绍如何使用 Cypress 测试 Angular 应用,并分享一些最佳实践。
环境配置
首先需要在项目中安装 Cypress:
npm install cypress --save-dev
安装 Cypress 后,可以在项目根目录创建 cypress.json
配置文件,配置其中的 baseUrl 和测试执行方式等参数。此处以 Angular CLI 创建的默认项目为例:
{ "baseUrl": "http://localhost:4200", "integrationFolder": "cypress/integration", "testFiles": "**/*.spec.js" }
创建测试
创建测试前需要了解 Cypress 的基本概念。Cypress 的测试用例称为 spec,每个 spec 包含多个测试用例称为 test。
下面是一个简单的示例,测试登录功能:
-- -------------------- ---- ------- -------------- -- -- - ------------- -- - ------------------- --- ---------- -- -- - ---------------------------------- ----------------------------------- -------------------------- -------------------------- --------- --- ---
首先使用 beforeEach 方法打开登录页,然后在 it 方法中编写测试用例。该测试用例先分别获取用户名和密码输入框,输入正确的账号密码,然后点击提交按钮,最后断言当前地址应包含 /home。可见 Cypress 编写测试用例非常简便。
测试最佳实践
聚焦测试
在编写测试用例时,要使测试聚焦于一个具体的场景或对象,避免在一次测试中包含太多不相关的操作。如测试登录功能,只保留了正确登录的测试用例而排除了其它情况,使测试更加具体化和准确。
页面对象模式
为了使测试代码更可维护和可读性更佳,可以使用最佳实践:页面对象模式。该模式将页面封装为一个对象,以支持更高级别的测试代码组织。以登录页为例,创建一个 LoginPage 对象:
-- -------------------- ---- ------- ----- --------- - ------- - ------------------- - ---------------------- - ----------------------------------- - ---------------------- - ----------------------------------- - -------- - -------------------------- - ------------ - ------ -------------------------- --------- - - ------ ------- ----------
LoginPage 对象中封装了关于页码元素的访问和操作方法,以及关于页面状态的方法。通过这种方式,通过对象的方法来操作登录页面的元素或者验证登录后页面的状态。
使用如下:
-- -------------------- ---- ------- -------------- -- -- - ----- --------- - --- ------------ ------------- -- - ------------------ --- ---------- -- -- - -------------------------------- --------------------------------- ------------------- ----------------------- --- ---
可以看到,这种方式比写独立的测试更优雅且容易维护。
定义自定义命令
自定义命令是 Cypress 框架中的一个特性,它允许用户将常用的测试命令封装成自定义命令(减少代码重复性),在测试代码中重复使用,如填写表单等操作。
下列自定义命令在某个页面上点击头部导航链接:
Cypress.Commands.add('navigateTo', (linkText) => { cy.get('#nav').contains(linkText).click(); });
在测试代码中可以通过下列方式使用:
-- -------------------- ---- ------- -------------- -- -- - ----- --------- - --- ------------ ------------- -- - ------------------ --- ------------- -- -- - -------------------------------- --------------------------------- ------------------- ---------------------- --- ---
总结
Cypress 提供了很多特性来增强前端自动化测试,使其更加快捷、高效。在 Angular 应用中使用 Cypress 进行 E2E 测试,可以显著提高 Web 应用程序的质量和可靠性。以上是使用 Cypress 编写 Angular 应用测试的一些最佳实践,希望能对读者有所帮助。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/648c1c5c48841e9894a6b2ab