通过在Cypress.io上运行测试生成漂亮的测试报告
nanshan 2024-11-20 19:23 67 浏览 0 评论
大家好。 今天,我将向您展示如何通过在Cypress.io上运行测试来生成漂亮的测试报告。 您可能已经知道Cypress是建立在Mocha之上的,所以Mocha的大多数功能都可以与Cypress一起使用,即Mocha的bdd语法,挂钩甚至报告模块。
默认情况下,Mocha提供了许多报告者(超过9个报告者),您可以选择其中一个(或多个)作为自己的测试报告。 在Cypress.io上配置Mocha的报告程序非常简单,只需在cypress.json文件中设置报告程序参数的值即可。
首先,让我向您展示一些内置的Mocha记者,以及如何与Cypress.io一起使用
1.规格
Spec记者是Mocha的默认记者。 因此,如果您未在项目中配置任何报告器,则将其视为测试报告。 规格报告器在TTY上以ANSI颜色显示测试结果,如下所示
要在Cypress.io上配置规格报告器,请将报告器参数配置为spec
{ "reporter": "spec"}
2.点矩阵
如果您想在运行测试时看到一些进展,可以选择这一步。 点矩阵记者是一系列点。 代表运行测试进度的字符。 测试失败会以红色感叹号突出显示! ,待定或跳过的测试以蓝色逗号突出显示,
要在赛普拉斯上配置点矩阵报告器,请将报告器参数指定为点
{
"reporter": "dot"
}
3.Nyan尼安
您可以选择更多内置的Mocha记者。 请在此页面上找到更多信息https://mochajs.org/#reporters
让我们用Mochawesome创建一个漂亮的Mocha Reporter
Mochawesome是自定义的Mocha报告程序,可生成脱机HTML / CSS报告以可视化您的测试结果。 它分步显示您的测试用例和失败测试的堆栈跟踪。 此外,它支持将您自己的自定义上下文添加到报告中。 这意味着您可以将屏幕快照添加到失败的测试示例中。 就像它的名字一样很棒
步骤1:安装Mochawesome
sh$ yarn add mocha@5.2.0 mochawesome mochawesome-merge
· mocha用作创建自定义报告程序的依赖库。
· mochawesome生成HTML格式的精美报告。
· mochawesome-merge自Cypress v3.0.0起,它分别运行每个规范,从而导致生成多个mochawesome报告(每个规范文件一个)。因此,我们必须使用该库合并所有报告,然后将其生成为一个HTML文件。
步骤2:将Mochawesome配置为Cypress Reporter
{
"reporter": "mochawesome",
"reporterOptions": {
"reportDir": "cypress/report/mochawesome-report",
"overwrite": false,
"html": false,
"json": true,
"timestamp": "mmddyyyy_HHMMss"
}
}
将报告程序配置为mochawesome,还可以为报告程序添加一些选项。 ReporterOptions参数取决于您指定的报告者。 这是Mochawesome记者的一些选项。
· 覆盖:覆盖现有的报告文件。 在这种情况下,由于赛普拉斯分别运行每个测试规范文件,因此我必须将此参数设置为false以避免替换现有的报告文件。
· html:在测试(规范)运行后生成html报告。 我计划在所有规格文件完成后生成一个HTML报告。 所以我将此参数设置为false
· json:在测试(规范)运行后生成JSON报告。 是的,我想要这样做是因为我希望这些文件(每个规格一个)将所有测试合并到一个HTML报告中。 所以我将此参数设置为true
您可以在这里找到更多有关摩卡车记者的选项
3.创建自己的赛普拉斯定制测试运行器
通常,对于任何简单的用例,您都可以使用cypress命令在Cypress上运行测试。 但是在这种情况下,我想在所有测试运行之前和之后做一些事情。 因此,我必须使用赛普拉斯模块API创建自己的自定义测试运行器
为自定义测试运行程序安装依赖项
sh$ yarn add yargs ls rimraf
· yargs:从命令行选项解析参数。 这是可选的。
· ls:列出所有现有的报告文件。
· rimraf:在测试运行之前删除所有现有的报告文件。
const cypress = require('cypress')
const yargs = require('yargs')
const { merge } = require('mochawesome-merge')
const marge = require('mochawesome-report-generator')
const rm = require('rimraf')
const cypressConfig = require('./cypress')
const ls = require('ls')
const argv = yargs.options({
'browser': {
alias: 'b',
describe: 'choose browser that you wanna run tests on',
default: 'chrome',
choices: ['chrome', 'electron']
},
'spec': {
alias: 's',
describe: 'run test with specific spec file',
default: 'cypress/integration/*.spec.js'
}
}).help()
.argv
const reportDir = cypressConfig.reporterOptions.reportDir
const reportFiles = `${reportDir}/*.json`
// list all of existing report files
ls(reportFiles, { recurse: true }, file => console.log(`removing ${file.full}`))
// delete all existing report files
rm(reportFiles, (error) => {
if (error) {
console.error(`Error while removing existing report files: ${error}`)
process.exit(1)
}
console.log('Removing all existing report files successfully!')
})
cypress.run({
browser: argv.browser,
spec: argv.spec
}).then((results) => {
const reporterOptions = {
reportDir: results.config.reporterOptions.reportDir,
}
generateReport(reporterOptions)
}).catch((error) => {
console.error('errors: ', error)
process.exit(1)
})
function generateReport(options) {
return merge(options).then((report) => {
marge.create(report, options)
})
}
sh$ node cypress_runner -b chrome
知道了! 这是Mochawesome HTML报告。 您可以查看测试用例的详细信息,例如 测试代码,测试执行时间(针对每个测试和所有测试)以及左侧的"测试过滤"菜单。 它太酷了。
4.将屏幕截图附加到测试失败的报告中
就像我之前提到的,您可以将自己的自定义上下文添加到Mochawesome报告程序中。因此,我将失败测试的屏幕截图附加到我的报告中。实际上,当在测试运行期间发生故障时,Cypress会自动捕获屏幕截图。因此,我只是将屏幕快照文件添加到报告中,仅此而已。我收听测试:after:运行事件,以通过Cypress支持文件在发生故障时将屏幕快照附加到报告中
const addContext = require('mochawesome/addContext')
Cypress.on('test:after:run', (test, runnable) => {
if (test.state === 'failed') {
const screenshotFileName = `${runnable.parent.title} -- ${test.title} (failed).png`
addContext({ test }, `assets/${Cypress.spec.name}/${screenshotFileName}`)
}
})
addContext是Mochawesome提供的一个对象,它允许您向报表添加任何自定义上下文。 不仅是屏幕截图文件,还包括您想要的任何东西,例如String,Object等。您可以在此处阅读有关此API的更多详细信息。
然后,我更新cypress.json中的screenshotFolder参数,以将我的屏幕截图放置到Mochawesome资产目录中。 我想确保我的测试报告可以正确引用屏幕快照文件。
我创建了一个新的测试用例,它总是在运行时失败。 之后,我再次运行测试。
最后,生成的测试报告如下所示。
呜呼。 屏幕截图附在报告中! 您可以在此处查看我的完整测试报告。
最后,您可以将此技术应用于您的持续集成系统。 它可以帮助您以精美的格式可视化测试结果。 您的团队成员可以清楚地阅读和理解测试报告。 希望本文对您的工作有所帮助。 测试愉快!
感谢这些酷的lib:https://github.com/adamgruber/mochawesome,https://github.com/Antontelesh/mochawesome-merge
(本文翻译自Traitanit Huangsri的文章《Generate a Beautiful Test Report from running Tests on Cypress.io》,参考:https://medium.com/cypress-io-thailand/generate-a-beautiful-test-report-from-running-tests-on-cypress-io-371c00d7865a)
相关推荐
- F5负载均衡器如何通过irules实现应用的灵活转发?
-
F5是非常强大的商业负载均衡器。除了处理性能强劲,以及高稳定性之外,F5还可以通过irules编写强大灵活的转发规则,实现web业务的灵活应用。irules是基于TCL语法的,每个iRules必须包含...
- 映射域名到NAS
-
前面介绍已经将域名映射到家庭路由器上,现在只需要在路由器上设置一下端口转发即可。假设NAS在内网的IP是192.168.1.100,NAS管理端口2000.你的域名是www.xxx.com,配置外部端...
- 转发(Forward)和重定向(Redirect)的区别
-
转发是服务器行为,重定向是客户端行为。转发(Forward)通过RequestDispatcher对象的forward(HttpServletRequestrequest,HttpServletRe...
- SpringBoot应用中使用拦截器实现路由转发
-
1、背景项目中有一个SpringBoot开发的微服务,经过业务多年的演进,代码已经累积到令人恐怖的规模,亟需重构,将之拆解成多个微服务。该微服务的接口庞大,调用关系非常复杂,且实施重构的人员大部分不是...
- 公司想搭建个网站,网站如何进行域名解析?
-
域名解析是将域名指向网站空间IP,让人们通过注册的域名可以方便地访问到网站的一种服务。IP地址是网络上标识站点的数字地址,为方便记忆,采用域名来代替IP地址标识站点地址。域名解析就是域名到IP地址的转...
- 域名和IP地址什么关系?如何通过域名解析IP?
-
一般情况下,访客通过域名和IP地址都能访问到网站,那么两者之间有什么关系吗?本文中科三方针对域名和IP地址的关系和区别,以及如何实现域名与IP的绑定做下介绍。域名与IP地址之间的关系IP地址是计算机的...
- 分享网站域名301重定向的知识
-
网站域名做301重定向操作时,一般需要由专业的技术来协助完成,如果用户自己在维护,可以按照相应的说明进行操作。好了,下面说说重点,域名301重定向的操作步骤。首先,根据HTTP协议,在客户端向服务器发...
- NAS外网到底安全吗?一文看懂HTTP/HTTPS和SSL证书
-
本内容来源于@什么值得买APP,观点仅代表作者本人|作者:可爱的小cherry搭好了NAS,但是不懂做好网络加密,那么隐私泄露也会随时发生!大家好,这里是Cherry,喜爱折腾、玩数码,热衷于分享数...
- ForwardEmail免费、开源、加密的邮件转发服务
-
ForwardEmail是一款免费、加密和开源的邮件转发服务,设置简单只需4步即可正常使用,通过测试来看也要比ImprovMX好得多,转发近乎秒到且未进入垃圾箱(仅以Mailbox.org发送、Out...
- 使用CloudFlare进行域名重定向
-
当网站变更域名的时候,经常会使用域名重定向的方式,将老域名指向到新域名,这通常叫做:URL转发(URLFORWARDING),善于使用URL转发,对SEO来说非常有用,因为用这种方式能明确告知搜索引...
- 要将端口5002和5003通过Nginx代理到一个域名上的操作笔记
-
要将端口5002和5003通过Nginx代理到域名www.4rvi.cn的不同路径下,请按照以下步骤配置Nginx:步骤说明创建或编辑Nginx配置文件通常配置文件位于/etc/nginx/sites...
- SEO浅谈:网站域名重定向的三种方式
-
在大多数情况下,我们输入网站访问网站的时候,很难发现www.***.com和***.com的区别,因为一般的网站主,都会把这两个域名指向到同一网站。但是对于网站运营和优化来说,www.***.com和...
- 花生壳出现诊断域名与转发服务器ip不一致的解决办法
-
出现诊断域名与转发服务器ip不一致您可以:1、更改客户端所处主机的drs为223.5.5.5备用dns为119.29.29.29;2、在windows上进入命令提示符输入ipconfig/flush...
- 涨知识了!带你认识什么是域名
-
1、什么是域名从技术角度来看,域名是在Internet上解决IP地址对应的一种方法。一个完整的域名由两个或两个以上部分组成,各部分之间用英文的句号“.”来分隔。如“abc.com”。其中“com”称...
- 域名被跳转到其他网站是怎么回事
-
当你输入域名时被跳转到另一个网站,这可能是由几种原因造成的:一、域名可能配置了域名转发服务。无论何时有人访问域名,比如.com、.top等,都会自动重定向到另一个指定的URL,这通常是在域名注册商设...
你 发表评论:
欢迎- 一周热门
-
-
爱折腾的特斯拉车主必看!手把手教你TESLAMATE的备份和恢复
-
如何在安装前及安装后修改黑群晖的Mac地址和Sn系列号
-
[常用工具] OpenCV_contrib库在windows下编译使用指南
-
WindowsServer2022|配置NTP服务器的命令
-
Ubuntu系统Daphne + Nginx + supervisor部署Django项目
-
WIN11 安装配置 linux 子系统 Ubuntu 图形界面 桌面系统
-
解决Linux终端中“-bash: nano: command not found”问题
-
NBA 2K25虚拟内存不足/爆内存/内存占用100% 一文速解
-
Linux 中的文件描述符是什么?(linux 打开文件表 文件描述符)
-
K3s禁用Service Load Balancer,解决获取浏览器IP不正确问题
-
- 最近发表
- 标签列表
-
- linux 查询端口号 (58)
- docker映射容器目录到宿主机 (66)
- 杀端口 (60)
- yum更换阿里源 (62)
- internet explorer 增强的安全配置已启用 (65)
- linux自动挂载 (56)
- 禁用selinux (55)
- sysv-rc-conf (69)
- ubuntu防火墙状态查看 (64)
- windows server 2022激活密钥 (56)
- 无法与服务器建立安全连接是什么意思 (74)
- 443/80端口被占用怎么解决 (56)
- ping无法访问目标主机怎么解决 (58)
- fdatasync (59)
- 405 not allowed (56)
- 免备案虚拟主机zxhost (55)
- linux根据pid查看进程 (60)
- dhcp工具 (62)
- mysql 1045 (57)
- 宝塔远程工具 (56)
- ssh服务器拒绝了密码 请再试一次 (56)
- ubuntu卸载docker (56)
- linux查看nginx状态 (63)
- tomcat 乱码 (76)
- 2008r2激活序列号 (65)