前言
Cypress 是一款基于 Chrome 的现代化前端端到端测试框架,它拥有一个简单、直观的 API 和许多开箱即用的工具,帮助您从头到尾直接在浏览器中运行测试。
在实际项目开发中,Cypress 可以帮助我们优化测试流程,提高测试效率和准确性,并且它可以自动生成丰富的测试报告,方便我们进行数据分析和优化测试策略。
本文将介绍如何使用 Cypress 来优化测试报告展示效果及数据分析,希望能为前端测试工作者提供一些指导意义。
前置条件
在开始使用 Cypress 进行测试之前,您需要有以下几项准备工作:
- 安装 Node.js 环境
- 安装 Cypress:
npm install cypress --save-dev
- 熟悉 Cypress 基本用法
优化测试报告展示效果
Cypress 默认生成的测试报告虽然已经很不错了,但是对于一些大型项目而言,需要对测试报告进行更加详细的展示和分析,以便在维护和开发过程中及时发现问题。
生成 Screenshots
Cypress 提供了 cy.screenshot()
方法来生成屏幕截图,在测试出现异常时,可以自动生成屏幕截图并输出到指定位置,方便开发者定位问题。
只需要在 Cypress 的 spec.js
文件中添加一个 afterEach()
方法,即可在每次测试结束后生成屏幕截图:
afterEach(() => { if (this.currentTest.state === 'failed') { cy.screenshot() } })
生成 Videos
除了生成屏幕截图外,Cypress 还提供了录制视频的功能。录制视频功能使用官方推荐的 cypress-video-recorder
插件实现。
首先需要安装插件:
npm install cypress-video-recorder --save-dev
安装完成后,在 cypress/support/index.js
文件中添加插件:
require('cypress-video-recorder/support');
此外,您需要在 cypress/plugins/index.js
文件中添加插件:
const { addMatchImageSnapshotPlugin } = require('cypress-image-snapshot/plugin'); module.exports = (on, config) => { addMatchImageSnapshotPlugin(on, config); };
以上两个配置都完成之后,只需要再在 cypress.json
文件中添加以下配置:
{ "video": true, "videoUploadOnPasses": false, "videoCompression": 32, "videoUploadOnPasses": true, "trashAssetsBeforeRuns": true }
这里的几个配置项含义如下:
video
: 是否启用视频录制功能。videoUploadOnPasses
: 视频录制后是否允许上传。videoCompression
: 视频压缩的倍数,默认为 32。trashAssetsBeforeRuns
: 是否在测试运行前删除所有未删除的视频。
生成 Custom Report
Cypress 内置了 Mochawesome 报告插件,可以生成高质量的测试报告。我们可以通过安装额外的插件来扩展 Mochawesome 以生成其它类型的报告,例如 cypress-multi-reporters
可以将结果生成到多个文件中,mochawesome-merge
可以合并多个测试结果,mochawesome-report-generator
可以生成交互式报告等。
安装插件
npm i --save-dev mochawesome mochawesome-merge mochawesome-report-generator cypress-multi-reporters
修改配置
在 cypress.json
文件中添加以下配置:
-- -------------------- ---- ------- - ----------- -------------------------- ------------------ - ------------------ -------------- ----------------------------- - ------------ --------------------- ------------ ------ ------- ------ ------- ----- ------------------ --- ------ -------- -------------- ------- -------- --------- ----- --------------- ----- ----------- ----- ------- ----- ------------ ----------------- - - -展开代码
这里的几个配置项含义如下:
reporter
: 报告生成器名称。reporterEnabled
: 启用的报告生成器名称。mochawesomeReporterOptions
: Mochawesome 报告的配置项。
生成雪碧图
在生产环境中,我们通常使用雪碧图优化图片资源加载的性能。而在自动化测试中,如果我们也能生成雪碧图并自动将其与测试报告关联起来,那将会更加方便我们进行测试结果展示和分析。
cypress-image-snapshot
插件可以生成雪碧图。只需要在 cypress/support/index.js
文件中添加插件即可:
require('cypress-image-snapshot/plugin');
数据分析
在测试报告生成后,我们可以通过报告中提供的数据来进行分析,以便更好地优化测试策略和改进产品质量。
生成运行统计数据
在测试完成后,mochawesome-report-generator
插件会生成一个 .json
文件,其中包含了所有测试用例的详细数据,如执行时间、测试结果、失败原因等。我们可以使用这些数据来生成运行统计数据。
示例代码:
-- -------------------- ---- ------- ----- -- - -------------- ----- ---- - ---------------- ----- - ------ - - -------------------- ----- -------- - ------------------------- ------- -------------------------- -------- ---------------- - ----- ---------- - -------------------- ------------------------------------- -- ---------------------------- - --------------------- -- -------- ------- ---- --- -------- ------- - ----- ------ - --------------------------- --------- ----- ---- - ------------------- ----- ----- - ----------- ------ - -------- ------------------- -- ------------------ -------- ------------------- -- --------------------- -------- ------------------- -- ------------------ --------- ------------------- -- - ----- ------ - ----------------- --------------------展开代码
生成测试覆盖率数据
测试覆盖率是指源代码中被测试覆盖到的行数百分比。它是衡量测试用例是否足够全面的重要指标之一。Cypress 可以通过 nyc
工具来生成测试覆盖率报告。
首先需要安装 nyc
:
npm install nyc --save-dev
在 cypress.json
文件中添加以下配置:
{ "coverage": true, "coverageFolder": "coverage" }
然后在 scripts
中添加以下命令:
{ "scripts": { "test": "nyc cypress run", "report:coverage": "nyc report --reporter=text-lcov | coveralls" } }
运行 npm test
完成测试之后,在根目录下生成一个 coverage
文件夹,其中包含 lcov.info
文件和 HTML 报告等。lcov.info
文件中包含了测试覆盖率数据,可以通过 nyc report
命令获取到。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/67c70427cc0f7239cde8e498