Cypress系列(41)- Cypress 的测试报告
如果想从头学起Cypress,可以看下面的系列文章哦
https://www.cnblogs.com/poloyy/category/1768839.html
注意
51 testting 有一篇文章会和我的一样,因为是我投的稿~~
前言
- Cypress 的测试报告模块脱胎于 Mocha 的测试报告,故任何 Mocha 支持的测试报告均可直接用于 Cypress
- 下面将利用 Cypress-example 提供的 web 应用程序作为例子,需要先启动本地服务
进入被测应用 logging-in__html-web-forms 的目录
C:\Users\user\Desktop\py\cypress-example-recipes\examples\logging-in__html-web-forms
启动本地服务
npm start
启动成功后,cmd窗口将显示服务器的地址和端口

内置的测试报告
内置的测试报告包括 Mocha 的内置测试报告和直接嵌入在 Cypress 中的测试报告,主要有以下几种
- spec 格式报告
- json 格式报告
- junit 格式报告
准备工作
确保 package.json 文件的 scripts 模块加入了如下键值对 "cypress:run":"cypress run"
- cypress run 是以无头浏览器模式跑测试用例文件夹下的所有测试用例
- cypress open 会打开测试用例集的界面,需要手动运行
spec 格式报告
简介
spec 格式是 Mocha 的内置报告,它的输出是一个嵌套的分级视图
如何使用
在 Cypress 中使用 spec 格式的报告非常简单,在命令行运行时加上 --reporter=spec
运行测试
进入 Cypress 安装的目录,cmd敲
yarn cypress:run --reorter=spec
运行完成后,测试报告如下图

json 格式报告
简介
json 测试报告格式将输出一个大的 JSON 对象
如何使用
在 Cypress 中使用 json 格式的报告非常简单,在命令行运行时加上 --reporter=json
运行测试
进入 Cypress 安装的目录,cmd敲
yarn cypress:run --reporter=json --reporter-options "toConsole=true"
运行完成后,测试报告如下图

junit 格式报告
简介
junit 测试报告格式将输出一个 xml 文件
如何使用
在 Cypress 中使用 xml 格式的报告非常简单,在命令行运行时加上 --reporter=junit
运行测试
进入 Cypress 安装的目录,cmd敲
yarn cypress:run --reporter junit --reporter-options "mochaFile=results/test_output.xml,toConsole=true"
运行完成后,测试报告如下图

自定义的测试报告
除了内置的测试报告,Cypress 也支持用户自动以报告格式
Mochawesome 报告介绍
- Mochawesome 是与 JavaScript 测试框架 Mocha 一起使用的自定义报告程序,它运行在 Node.js(≥8)上
- 并与 mochawesome-report-generatir 结合使用生成独立的 HTML/CSS 报告,以帮助可视化测试运行
在 Cypress 中使用 Mochawesome 报告的步骤
第一步
- 将 Mocha、Mochawesome 添加至项目中(看下面命令)
npm install --save-dev mocha
npm install --save-dev mochawesome
注意坑
- 先看看 node_modules 目录下是否有 mocha 文件夹,如果有直接装 mochawesome
- 如果安装 mocha 失败,出现很古怪的错误,譬如 mkdirp 版本不行(如: mkdirp@0.5.: Legacy versions of mkdirp are no longer supported. Please update to mkdirp .x. )
- 尝试先 update mkdirp 库,如果也报错,则 uninstall mkdirp 库,如果仍然报错;则把 Cypress 目录下的 node_modules 整个文件夹删掉,重新执行 npm install ,大概率可以解决问题了
(别问我怎么知道这些坑...)
第二步
进入 Cypress 安装目录,cmd执行下面命令
yarn cypress:run --reporter mochawesome
运行完成后,可以看到下图

测试报告文件夹 mochawesome-report 会生成在项目根目录下


点击 html 查看可视化报告

用户自定义报告的步骤
第一步:配置 reporter 选项
- cypress.json 文件中配置 reporter 选项,指定 reporter 文件位置
- 在本栗子中,把 reporter 定义在 custom_reporter.js 文件中
第二步:编写自定义报告文件
- 进入 Cypress 安装目录下的 cypress 目录下(本案例在: C:\Users\user\Desktop\py\MyCypress\cypress )
- 创建 reporter 文件夹,然后创建一个 custom_reporter.js 文件
- 写以下代码(此自定义报告扩展了内置报告,仅更改了成功的显示样式)
var mocha = require('mocha');
module.exports = MyReporter;
function MyReporter(runner) {
mocha.reporters.Base.call(this, runner)
var passes = 0
var failures = 0
runner.on('pass', function (test) {
passes++
console.log('pass:%s', test.fullTitle())
})
runner.on('fail', function (test, err) {
failures++
console.log('fail:%s -- error:%s', test.fullTitle(), err.message)
})
runner.on('end', function () {
console.log('用户自定义报告:%d/%d', passes, passes + failures)
})
}
第三步:运行测试
进入 Cypress 安装目录,cmd敲下面命令
yarn cypress:run --reporter ../cypress/reporters/custom_reporter.js
运行完成后,测试报告如下图

生成混合测试报告
前言
- Cypress 除了支持单个测试报告,还支持混合测试报告
- 老板或者管理者一般都喜欢看到多种不一样样式的报告,比如测试在 CI 中运行时,又想生成 junit 格式的报告,又想在运行时实时看到测试输出
- Cypress 官方推荐使用 mocha-multi-reporters 来生成混合测试报告(https://github.com/stanleyhlng/mocha-multi-reporters)
使用 mocha-multi-reporters 的测试步骤
第一步:安装所需库
npm install --save-dev mocha-multi-reporters mocha-junit-reporter
第二步:创建 json 文件
在 cypress/reporters 文件夹下,创建一个 custom.json 文件,增加如下内容:
{
"reporterEnabled": "spec,json, mocha-junit-reporter",
"reporterOptions": {
"mochaFile": "cypress/results/results-[hash].xml"
}
}
第三步:运行测试
进入 Cypress 安装目录,cmd敲下面命令
yarn cypress run --reporter mocha-multi-reporters --reporter-options configFile=cypress/reporters/custom.json --spec cypress/integration/testLogin.js
运行完成后,测试报告如下图

测试报告文件夹 results 会生成在 Cypress安装路径/cypress 目录下

总结
- 当我们运行完一次测试(可能包含多个 spec),我们更希望看到一个完整的测试报告文件,而不是分开的独立文件
- 特别对于 HTML 格式报告来说,整合到同一个 HTML 报告中是更加直观的
- Cypress 为了解决此问题也提供了高阶的方法,将在后续的 Cypress 进阶部分进行详细介绍
Cypress系列(41)- Cypress 的测试报告的更多相关文章
- Cypress系列(2)- Cypress 框架的详细介绍
如果想从头学起Cypress,可以看下面的系列文章哦 https://www.cnblogs.com/poloyy/category/1768839.html Cypress 简介 基于 JavaSc ...
- Cypress系列(44)- 命令行运行 Cypress
如果想从头学起Cypress,可以看下面的系列文章哦 https://www.cnblogs.com/poloyy/category/1768839.html 前言 前面也介绍过 Cypress 命令 ...
- Cypress系列(1)- Window下安装 Cypress 并打开
如果想从头学起Cypress,可以看下面的系列文章哦 https://www.cnblogs.com/poloyy/category/1768839.html 系统要求 Cypress 是一个被安装在 ...
- Cypress系列(4)- 解析 Cypress 的默认文件结构
如果想从头学起Cypress,可以看下面的系列文章哦 https://www.cnblogs.com/poloyy/category/1768839.html 默认文件结构 在使用 cypress o ...
- Cypress系列(5)- 自定义 Cypress
如果想从头学起Cypress,可以看下面的系列文章哦 https://www.cnblogs.com/poloyy/category/1768839.html 前言 Cypress 不仅支持用户自定义 ...
- Cypress系列(14)- 环境变量详解
如果想从头学起Cypress,可以看下面的系列文章哦 https://www.cnblogs.com/poloyy/category/1768839.html 前言 环境变量,其实就是根据环境的变化, ...
- Cypress系列(13)- 详细介绍 Cypress Test Runner
如果想从头学起Cypress,可以看下面的系列文章哦 https://www.cnblogs.com/poloyy/category/1768839.html 前言 Test Runner 也叫运行器 ...
- Cypress系列(65)- 测试运行失败自动重试
如果想从头学起Cypress,可以看下面的系列文章哦 https://www.cnblogs.com/poloyy/category/1768839.html 重试的介绍 学习前的三问 什么是重试测试 ...
- Cypress系列(67)- 环境变量设置指南
如果想从头学起Cypress,可以看下面的系列文章哦 https://www.cnblogs.com/poloyy/category/1768839.html 常见的环境变量设置方式 可参考这篇文章: ...
随机推荐
- Java的前生今世
Java作为一门编程语言,自诞生以来已经流行了20多年,在学习它之前,我们有必要先了解一下它的历史,了解它是如何一步步发展到今天这个样子. 孕育 上世纪90年代,硬件领域出现了单片式计算机系统,比如电 ...
- Python实用笔记 (27)面向对象高级编程——使用枚举类
枚举类型定义一个class类型,然后,每个常量都是class的一个唯一实例.Python提供了Enum类来实现这个功能: from enum import Enum Month = Enum('Mon ...
- .NET Core加解密实战系列之——消息摘要与数字签名算法
目录 简介 功能依赖 消息摘要算法 MD算法 家族发展史 应用场景 代码实现 MD5 示例代码 SHA算法 应用场景 代码实现 SHA1 SHA256 示例代码 MAC算法 HMAC算法的典型应用 H ...
- SQL注入基础原理
Web安全: 三层架构(3-tier architecture) 通常意义上就是将整个业务应用划分为: 界面层(User Interface layer) 业务逻辑层(Business Logic L ...
- day03组件
1.text 编写文本信息,等价于span 2.view 等价于div 3.image ============================wxml====================== ...
- 图灵学院JAVA互联网架构师专题学习笔记
图灵学院JAVA互联网架构师专题学习笔记 下载链接:链接: https://pan.baidu.com/s/1xbxDzmnQudnYtMt5Ce1ONQ 密码: fbdj如果失效联系v:itit11 ...
- 执行python 爬虫脚本时提示bs4.FeatureNotFound: Couldn't find a tree builder with the features you requested: lxml. Do you need to install a parser library?
from bs4 import BeautifulSoupfrom urllib.request import urlopenimport re html = urlopen('http://**** ...
- JavaScript之原型模式
JavaScript中有这样的一个概念,对象. 有不少人觉得Java这么语言才是面向对象的语言,JavaScript哪里面向对象了. 其实说JavaScript面向对象还不如说JavaScript基于 ...
- day47 数据库进阶
目录 一.select查询扩展 1 几个重要关键字的执行顺序 2 where筛选条件 3 group by分组 4 having 分组之后的筛选条件 5 distinct去重 6 order by 排 ...
- day33 网络编程(下)
目录 上节课回顾: 一.传输层 二.应用层 三.socket 四.如何获取目标ip地址 五.网络通信的流程 上节课回顾: 通过ip地址如何找到另外一台设备 ip地址分为子网部分和主机部分 我们要和其他 ...