• 2
  • 1
分享

      前言

  • 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窗口将显示服务器的地址和端口图1.png

      内置的测试报告

      内置的测试报告包括 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

      运行完成后,测试报告如下图

图2.png

      json 格式报告

      简介

      json 测试报告格式将输出一个大的 JSON 对象

      如何使用

      在 Cypress 中使用 json 格式的报告非常简单,在命令行运行时加上  --reporter=json 

      运行测试

      进入 Cypress 安装的目录,cmd敲

yarn cypress:run --reporter=json --reporter-options "toConsole=true"

      运行完成后,测试报告如下图

图3.png

      junit 格式报告

      简介

      junit 测试报告格式将输出一个 xml 文件

      如何使用

      在 Cypress 中使用 xml 格式的报告非常简单,在命令行运行时加上   --reporter=junit 

      运行测试

      进入 Cypress 安装的目录,cmd敲

yarn cypress:run --reporter junit --reporter-options
 "mochaFile=results/test_output.xml,toConsole=true"

      运行完成后,测试报告如下图

图4.png

      自定义的测试报告

      除了内置的测试报告,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.1: Legacy versions of mkdirp are no longer supported. Please update to mkdirp 1.x.  )

  • 尝试先 update mkdirp 库,如果也报错,则 uninstall mkdirp 库,如果仍然报错;则把 Cypress 目录下的 node_modules 整个文件夹删掉,重新执行 npm install ,大概率可以解决问题了(别问我怎么知道这些坑...)

      第二步

  • 进入 Cypress 安装目录,cmd执行下面命令

yarn cypress:run --reporter mochawesome

      运行完成后,可以看到下图
图5.png

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

图6.png

图7.png

      点击 html 查看可视化报告

图8.png

      用户自定义报告的步骤

      第一步:配置 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

      运行完成后,测试报告如下图

图9.png

      生成混合测试报告

      前言

  • 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

      运行完成后,测试报告如下图

图10.png

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

图12.png


      总结

      当我们运行完一次测试(可能包含多个 spec),我们更希望看到一个完整的测试报告文件,而不是分开的独立文件。

      特别对于 HTML 格式报告来说,整合到同一个 HTML 报告中是更加直观的。

      Cypress 为了解决此问题也提供了高阶的方法,将在后续的 Cypress 进阶部分进行详细介绍。


作者:小菠萝

来源:51Testing软件测试网原创

  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          •   尽管自动化测试可以生成简洁的html测试报告,但是Testng自带的模板往往还是不够用。如果想要更加漂亮的数据和样式,就需要自己手动写模板。虽然有很多代码生成器,可以轻而易举的生成想要的模板样式代码,但是修改啊,配置啊多多少少还是会花一些时间,有时候若稍有不慎,调整布局就会弄花眼。如果使用成熟的用例管理工具,那么只要有测试结果,测试报告就可以自动生成了,比如使用testlink导出测试报告,则可以省去不少精力和时间了。如果想亲自设计一套符合自己审美的测试报告模板,这里推荐一个免费的工具MagicalCoder,H5页面布局可以在线使用,拖拖拽拽弄好布局后就可以获得源码,不懂前端代码的测试同...
            12 12 3855
            分享
          • 1、引言今天分享的这部分内容,应该算是Locust的进阶篇,毕竟针对一般的性能自动化测试人员来说,掌握小鱼写的前5章节的知识,就能足够应对大部分情况。但是,针对有些需要进阶自己的技术,那么,可以持续关注小鱼的博客,让我们一起探索Locust,探索性能自动化。那么,话不多说,我们开始今天的进阶篇,自定义负载测试图形2、定义有些时候,默认的形状已经无法满足我们的特定要求,那么这个时候,我们就需要完全自定义负载测试的图形形状。而这并不难,就是通过设置 用户或者更更改用户数和产生率来实现的。2.1 列举实例例如:我们想自定义时间生成负载峰值或上下倾斜。如何实现呢??直接使用 LoadTestshape...
            1 0 3109
            分享
          •   一、性能指标在性能测试的作用?  性能指标在性能测试中起着非常重要的作用,它们帮助我们评估和了解系统的性能表现。下面用通俗易懂的话来解释性能指标的作用和意义:  1.帮助我们了解系统的处理能力:性能指标可以告诉我们系统在给定负载下能够处理多少请求。就像一个快递小哥,他每天能够送多少个包裹,这个数字就是他的处理能力。对于系统来说,性能指标可以告诉我们它能够处理多少个请求,这样我们就可以知道系统的处理能力是否满足我们的需求。  2.帮助我们评估系统的稳定性:性能指标还可以帮助我们评估系统在高负载情况下的稳定性。就像一辆车,我们要知道它在高速行驶时是否稳定,需要了解它的最高速度和操控性能。对于系...
            0 0 885
            分享
          • 印象中,测试流程制度这块,我们每年都会更新,当然啦,还是hr追的紧啊,主要目的说是为了保障线上质量。浅浅分享一下吧,觉得实用可以直接抱走。今年我们主要抓的部分分为两个,一个是计划达成率,一个是线上质量。按照实际完成的情况进行加分或者扣分。一、【计划达成率】按照测试计划及测试用例进行测试,符合相关项目规范,100%完成开发计划。因个人原因,每延迟一天,扣10分,项目整体提前一天及以上,加10分。(项目具体日期按照项目评估时间进行)二、【上线后质量】产品/功能上线后的经分析是测试遗漏导致的bug,进行扣分。若是P1级别的bug,1个扣10分,若是P2级别bug,1个扣5分,若是P3级别bug,扣1...
            1 0 1690
            分享
          • 作者:何文斯 - Vince,LLM 应用研究者,Dify 团队产品经理,对 LLM 应用、Embedding、LangChian 等保持持续关注和深度研究。大语言模型之上的应用层面有三项技术需要理解:提示词工程(Prompt Engineering);嵌入(Embedding);微调(Fine-tuning)。其中 Embedding  作为大语言模型理解文本语义的重要技术,在搜索引擎、构建私有知识问答系统、内容推荐系统等都有相当广泛的应用。本文作为我的一篇个人技术笔记在整理了一周后分享到公众号内。Embedding 的基本概念什么是 Embedding,OpenAI 官方文档中是...
            0 0 1325
            分享
      • 51testing软件测试圈微信