Mocha

Mocha介绍

介绍
  • Cypress 底层依赖于很多优秀的开源测试框架,其中就有 Mocha
  • Mocha 是一个适用于 Node.js 和浏览器的测试框架,它使得异步测试变得简单
JS 语言带来的问题

JS 是单线程异步执行的,这使得测试变得复杂,因为无法像测试同步执行的代码那样,直接判断函数的返回值是否符合预期(因为给函数赋值时函数可能并未执行)

如何验证异步函数的正确性
  • 需要测试框架支持回调,Promise 或者其他方式来验证异步函数的正确性
  • Mocha 提供了出色的异步支持包括 Promise ,从而使得异步测试变得简单
Cypress 整合 Mocha

Cypress 继承并扩展了 Mocha 对异步的支持

Mocha 提供了什么
  • 多种接口来定义测试套件,Hooks,单个测试( Individual )
  • BDD(Behavior-Driven Development,行为驱动开发
  • TDD(Test-Driven Development,测试驱动开发
  • Exports、QUnit、Require
Cypress 采纳了 Mocha 的 BDD 语法
  • 该语法非常适合集成测试和单元测试
  • 在 Mocha 中,一个 BDD 风格的测试用例看起来是这样的
describe('description',()=>{beforeEach(()=>{cy.log('---- before method ---');})afterEach(()=>{cy.log('---- after method ---');})context('test context',()=>{it('test1',()=>{cy.log('test1');})it('test2',()=>{cy.log('test2');})})
})
常见 Mocha 模块

Cypress 将 Mocha 硬编码在自己的框架中,所以编写测试用例都是基于 Mocha 提供的如下基本功能模块

  • describe()
  • context()
  • it()
  • before()
  • beforeEach()
  • afterEach()
  • after()
  • .only()
  • .skip()
对于一条可执行的测试用例来说,有以下两个必要的组成部分
describe()
  • 代表测试套件,里面可以设定 context() ,也可以包括多个测试用例 it() ,还能嵌套子测试套件
  • 一个测试套件可以不包括任何钩子函数(Hook),但必须包含至少一条测试用例 it()
it()

代表一条测试用例

其他模块
  • 除上述两个功能模块外,其他功能模块对于一条可执行的测试来说,都是可选的
  • 例如 context() 是 describe() 的别名,其行为方式是一致的,直接用 context() 代替 describe() 也是可以的哦

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/153672.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

软件测试/测试开发/人工智能丨​Python运算符解析,小白也能轻松get

什么是运算符 运算符是用于进行各种运算操作的符号或关键词。 在数学和计算机编程中,运算符被用来表示不同的运算操作,例如加法、减法、乘法、除法等。 比如: 4 5,其中,4和5为操作数,为运算符。a 10,…

录屏软件自动开启录视频,是如何实现的?

工作要留痕,作为职场人的一项必备技能,因此许多人在做一些重要操作的时候,就会提前开启录屏软件,把操作的每一个步骤进行录制,以避免在出现问题的时候进行检查。当每天都需要在固定的时间点重复某项工作的时候&#xf…

2311rust,到35版本更新

1.32.0 rustup self update rustup update stablerustup更新自己. dbg宏 打印调试,你需要: let x 5; println!("{:?}", x); //甚至可能是 println!("{:#?}", x);在Rust1.32.0中,为此添加了个新的dbg!宏: fn main() {let x 5;dbg!(x); }如果运行此…

openGauss学习笔记-126 openGauss 数据库管理-设置账本数据库-归档账本数据库

文章目录 openGauss学习笔记-126 openGauss 数据库管理-设置账本数据库-归档账本数据库126.1 前提条件126.2 背景信息126.3 操作步骤 openGauss学习笔记-126 openGauss 数据库管理-设置账本数据库-归档账本数据库 126.1 前提条件 系统中需要有审计管理员或者具有审计管理员权…

数据中心走向绿色低碳,液冷存储舍我其谁

引言:没有最冷,只有更冷,绿色低碳早已成为行业关键词。 【全球存储观察 | 科技热点关注】 每一次存储行业的创新,其根源离不开行业端的用户需求驱动。 近些年从数据中心建设的整体发展情况来看,从风冷到…

【算法问题】错排问题

目录 1.概述2.代码实现2.1.获取错排情况总数2.2.获取每种错排情况 3.应用 1.概述 (1)n 个有序的元素有 n! 个不同的排列,如果一个排列使得所有的元素不在原来的位置上,则称这个排列为错排(也称重排)。例如…

Linux驱动开发 问题随笔

1、内核空间与用户空间数据交换方式 分两种情况: 1> 需要交换的数据量较大时; 2> 需要交换的数据量较小时; 第一种情况使用以下的函数: unsigned long copy_to_user(void __user* to, const void* from, unsigned long n)…

提升 Python 执行速度:Codon、C/C++、Rust、Numba(JIT)、Taichi、Nuitka、MatxScript

几种流行的 Python 性能加速方案对比:https://zhuanlan.zhihu.com/p/604519817 对于一般通用场景用户,对性能没有那么强烈的诉求,紧跟官方步伐,升级到最新版本的 Python 既可,或者使用 PyPy。Numba、Codon、Taichi 等这…

【蓝桥杯选拔赛真题23】C++计算24 第十二届蓝桥杯青少年创意编程大赛C++编程选拔赛真题解析

C/C++计算24 第十二届蓝桥杯青少年创意编程大赛C++选拔赛真题 一、题目要求 1、编程实现 “计算 24”是一个流传已久的数字游戏,小蓝最近对此痴迷不已 游戏规则是:从 1~10 之间的自然数任意拿出 4 个数(4 个数各不相同,顺序随机),进行加、减、乘三种运算(使用某种运算…

汇编-MOVSXD64位带符号扩展传送

允许源操作数为32位的寄存器或内存操作数 ExitProcess PROTO .code main PROCmov ebx, 0FFFFFFFFh movsxd rax, ebx ;RAX FFFFFFFFFFFFFFFFhmov ebx, 01FFFFFFFh movsxd rdx, ebx ;RDX 000000001FFFFFFFhmov ecx,0 ;结束程序call ExitProcess main ENDP E…

Spring学习之注解@Autowired、@Qualifier、@Resource

Spring学习之注解Autowired、Qualifier、Resource 在Spring框架中,注解(Annotation)是一种用于依赖注入(DI)的机制。 Autowired: Autowired 是Spring提供的注解,用于自动注入依赖。当Spring创建一个bean时…

【前端知识】Node——文件流的读写操作

四种基本流类型: 1.Writable: 可以向其写入数据的流 2.Readable: 可以从中读取数据的流 3.Duplex:同时为Readable 和 Writable 4.Transform: Duplex可以在写入和读取数据时修改或转换数据的流 一、Readable const fs require(fs);// 创建文件的Readable const rea…

ADB安装及使用介绍

一、ADB简介 1、什么是adb ADB 全称为 Android Debug Bridge,起到调试桥的作用,是一个客户端-服务器端程序。其中客户端是用来操作的电脑,服务端是 Android 设备。 ADB 也是 Android SDK 中的一个工具,可以直接操作管理 Android …

CRM系统的客户细分有什么作用?

我们常常说,企业想要开展有针对性的营销活动,就需要进行客户细分。通过特定条件,将客户分为几类,从而对不同类型的客户提供不同的产品和服务。下面我们就针对这里来详细说说,CRM中客户细分是什么?如何细分客…

微信小程序如何使用scss,less

搜到很多都是先VSCode安装好…插件…。这都是很久之前的方法了,所以想写这篇文章 一、修改project.config.json配置文件 "setting": {"useCompilerPlugins": ["sass"]},二、然后就可以删除 .wxss 文件了,就用 .scss 文件…

2024年山东省职业院校技能大赛中职组 “网络安全”赛项竞赛试题-A卷

2024年山东省职业院校技能大赛中职组 “网络安全”赛项竞赛试题-A卷 2024年山东省职业院校技能大赛中职组 “网络安全”赛项竞赛试题-A卷A模块基础设施设置/安全加固(200分)A-1:登录安全加固(Windows, Linux)A-2&#…

算法设计与分析算法实现——删数问题

通过棋盘输入一个高精度的正整数n(n的有效位数<=240)去掉其中任意s个数字后,剩下的数字按原左右次序将组成一个新的正整数。变成对给定的n和s,寻找一种方案,使得剩下的数字组成的新数最小。 输入:n,s 输出:最后剩下的最小数 输入实例: 178543 4 输出示例: 13 首先…

Java stream流 常用记录

根据列表中的某个字段进行去重 // 根据roleKey对列表去重return roleList.stream().map(AccountRole::getRoleKey).distinct().map(roleKey -> roleList.stream().filter(role -> role.getRoleKey().equals(roleKey)).findFirst().orElse(null)).filter(Objects::nonNul…