Cypress: 另一种在浏览器中运行测试的方式

· 约 4 分钟读完

前言

前端自动化测试是保证 Web 应用质量的重要一环。随着应用复杂度的增加和需求变更的频繁,对测试效率和可维护性的要求越来越高。

传统的测试工具涵盖的面广、功能齐全,但多数并不易于开发者使用。难以配置和维护,测试脚本难以编写,且执行时间相对较慢等缺点显示出来。为了提高效率和质量,需要寻找一种新的测试框架使得测试变得高效、易用、快速。

在这里,我们将讨论 Cypress,一种现代化的前端测试框架。接着,我们介绍 Cypress 的特性,并通过实例来展示 Cypress 的优雅、效率特点,最终指导开发者如何使用 Cypress 来运行项目的单元测试。

Cypress 特性

Cypress 是一个现代化的端到端测试框架,专门用于构建 Web 应用。它的特点如下:

  • 真实环境: Cypress 是在浏览器内运行的测试框架,其 API 基于真实环境而建造,让测试更接近真实环境。

  • 简洁易用: Cypress 是使用了非常易读、简明的命令行接口、可视化的 UI 界面和智能断言的智能测试框架。开发人员不需要深入学习框架,参考文档,使用方便。

  • 回归测试: Cypress 的可视化的工具界面使开发者可以轻松地重放、调试、审阅测试过程中出现的错误,缩短测试时间,提高测试稳定性。

  • 即时响应: Cypress 能够为使用者提供即时反馈,显示关键指标,帮助定位性能问题和错误,极大地减轻调试的工作量。

  • 可拓展性: Cypress 可以轻松结合其它工具和库,方便扩展,但不会引发兼容性问题。Cypress 能够兼容所有主流的浏览器。

Cypress 实践指导

开发人员可以充分利用 Cypress 的简单性和易用性,结合其它前端工具 (Jest / Enzyme), 来加速项目的单元测试,可以在开发的同时保证测试的效率和质量。

安装

Cypress 安装简单易用,您可以通过 Yarn 或者 NPM 来安装 Cypress 包。执行如下命令:

或:

安装完成后,我们需要配置 Cypress 的插件并添加一些必要的设置。

该配置文件置于 cypress/plugins/index.js。 Ccypress 还需要一个配置文件 cypress.json 来进行支持,具体的配置请查看官网。

开始编写测试脚本

我们可以根据需求在 cypress/integration 的目录下编写测试脚本。例如,我们创建一个名为 myTest.spec.js 的测试文件。

首先,需要在文件顶部导入 Cypress:

然后,我们可以使用 Cypress 提供的方法来编写测试用例。

例如,我们可以使用 cy.visit() 方法打开网站,并检查页面的标题是否正确:

其中,describe() 是用于测试套件的方法,it() 用于单元测试或测试用例。上述代码描述了一个测试套件,由一个称为 Visit my website 的测试用例组成。该测试用例通过 cy.visit() 方法,访问 url,最后调用 title() 方法来检查页面上的标题是否和预期一致。

覆盖率统计

在测试完成后,我们可以使用 Cypress 的覆盖率统计工具来在基于项目上依据测试覆盖率分析工具而生成代码覆盖报告。

nyc 是一个覆盖率生成器,可以生成相应的代码覆盖报告,Cypress (及类似的前端工具)可以利用它生成相应的单元测试覆盖率报告,执行以下命令(以 Jest 为例):

结语

在测试领域,Cypress 是一个非常有应用价值的前端测试框架。迭代升级来自社区的业务需求,满足着测试领域的新特点, 在提高应用软件质量和测试效率方面给开发者带来更好的选择。

希望我们的思路和实践能够为开发者提供一些新思路和切入点。关于 Cypress 的其它应用方案和文案,感兴趣的同学可以参考开源社区。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/67d6b68aa941bf7134c901d4