Cypress 中的报告器
你将学到
- 如何在 Cypress 中使用自定义报告器
- 如何使用多个报告器
- 如何跨测试文件合并报告
简介
在 Cypress 中编写并运行测试后,查看测试结果至关重要。 Cypress 提供了多种方式来查看测试运行结果。
- Cypress Cloud - 在 Cypress Cloud 中查看测试结果、测试数据、错误、截图、视频和测试回放。
- Cypress App 的开源内置及自定义报告器。
本文档介绍如何在 Cypress App 中使用内置报告器和自定义报告器。
要开始使用Cypress Cloud, 注册即可享受2周免费试用 - 包含所有 Cypress Cloud高级功能以及充足的测试结果, 让您体验Cypress Cloud的强大功能!
内置报告器
由于 Cypress 基于 Mocha 构建,因此任何为 Mocha 构建的报告器都可以与 Cypress 一起使用。以下是 Mocha 的内置报告器列表。
默认情况下,Cypress 使用 spec
报告器将信息输出到 STDOUT
。
我们还添加了两个最常用的 Mocha 第三方报告器。这些报告器已内置到 Cypress 中,无需安装即可使用。
自定义报告器
Cypress 支持创建自定义报告器或使用任何类型的第三方报告器。
本地安装
你可以通过相对或绝对路径加载自定义 Mocha 报告器。这些可以在 Cypress 配置文件或通过命令行指定。
例如,如果你有以下目录结构:
> my-project
> cypress
> src
> reporters
- custom.js
你可以通过以下任一方式指定自定义报告器的路径。
Cypress 配置
- cypress.config.js 文件
- cypress.config.ts 文件
const { defineConfig } = require('cypress')
module.exports = defineConfig({
reporter: 'reporters/custom.js',
})
import { defineConfig } from 'cypress'
export default defineConfig({
reporter: 'reporters/custom.js',
})
命令行
npx cypress run --reporter reporters/custom.js
通过 npm 安装
当通过 npm 使用自定义报告器时,请指定包名。
Cypress 配置
- cypress.config.js 文件
- cypress.config.ts 文件
const { defineConfig } = require('cypress')
module.exports = defineConfig({
reporter: 'mochawesome',
})
import { defineConfig } from 'cypress'
export default defineConfig({
reporter: 'mochawesome',
})
命令行
npx cypress run --reporter mochawesome
报告器选项
某些报告器接受自定义行为的选项。这些可以在 Cypress 配置或通过命令行选项指定。
报告器选项因报告器而异(可能根本不支持)。请参阅你使用的报告器文档以了解支持的选项。
以下配置将 JUnit 报告输出到 STDOUT
并保存为 XML 文件。
Cypress 配置
- cypress.config.js 文件
- cypress.config.ts 文件
const { defineConfig } = require('cypress')
module.exports = defineConfig({
reporter: 'junit',
reporterOptions: {
mochaFile: 'results/my-test-output.xml',
toConsole: true,
},
})
import { defineConfig } from 'cypress'
export default defineConfig({
reporter: 'junit',
reporterOptions: {
mochaFile: 'results/my-test-output.xml',
toConsole: true,
},
})
命令行
npx cypress run --reporter junit \
--reporter-options "mochaFile=results/my-test-output.xml,toConsole=true"
跨测试文件合并报告
每个测试文件在每次 cypress run
执 行期间都是完全独立处理的。因此,每个测试运行都会_覆盖_之前的报告文件。要为每个测试文件保留唯一的报告,请在 mochaFile
文件名中使用 [hash]
。
以下配置将在 results
文件夹中创建单独的 XML 文件。然后,你可以使用第三方工具合并报告输出。例如,对于 Mochawesome 报告器,可以使用 mochawesome-merge 工具。
Cypress 配置
- cypress.config.js 文件
- cypress.config.ts 文件
const { defineConfig } = require('cypress')
module.exports = defineConfig({
reporter: 'junit',
reporterOptions: {
mochaFile: 'results/my-test-output-[hash].xml',
},
})
import { defineConfig } from 'cypress'
export default defineConfig({
reporter: 'junit',
reporterOptions: {
mochaFile: 'results/my-test-output-[hash].xml',
},
})
命令行
npx cypress run --reporter junit \
--reporter-options "mochaFile=results/my-test-output-[hash].xml"
多个报告器
我们经常看到用户希望使用多个报告器。在 CI 中运行时,你可能希望生成 junit
报告和 json
报告。这很好,但设置此报告器后,你将无法在测试运行时获得任何额外反馈!
解决方案是使用多个报告器。你将同时获得两者的好处。
我们建议使用 npm 模块 cypress-multi-reporters。
示例
将 spec
输出到 STDOUT
,保存 JUnit XML 文件
我们希望将 spec
报告输出到 STDOUT
,同时为每个测试文件保存一个 JUnit XML 文件。
我们需要安装额外的依赖项:
cypress-multi-reporters
: 启用多个报告器mocha-junit-reporter
实际的 junit 报告器,因为我们无法使用 Cypress 自带的junit
报告器
npm install cypress-multi-reporters mocha-junit-reporter --save-dev
在 Cypress 配置或通过命令行中指定你的报告器和报告器选项。
Cypress 配置
- cypress.config.js 文件
- cypress.config.ts 文件
const { defineConfig } = require('cypress')
module.exports = defineConfig({
reporter: 'cypress-multi-reporters',
reporterOptions: {
configFile: 'reporter-config.json',
},
})
import { defineConfig } from 'cypress'
export default defineConfig({
reporter: 'cypress-multi-reporters',
reporterOptions: {
configFile: 'reporter-config.json',
},
})