zoukankan      html  css  js  c++  java
  • Cypress系列(7)- Cypress 编写和组织测试用例篇 之 Mocha的介绍

    如果想从头学起Cypress,可以看下面的系列文章哦

    https://www.cnblogs.com/poloyy/category/1768839.html

    前言

    • 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 风格的测试用例看起来是这样的

    常见 Mocha 模块

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

    •  describe() 
    •  context() 
    •  it() 
    •  before() 
    •  beforeEach() 
    •  afterEach() 
    •  after() 
    •  .only() 
    •  .skip() 

    对于一条可执行的测试用例来说,有以下两个必要的组成部分

    describe()

    • 代表测试套件,里面可以设定 context() ,也可以包括多个测试用例 it() ,还能嵌套子测试套件
    • 一个测试套件可以不包括任何钩子函数(Hook),但必须包含至少一条测试用例 it() 

    it()

    代表一条测试用例

    其他模块

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

     可以看到,一共有三层的 context() ;

    运行成功看看下面的结果

  • 相关阅读:
    关于防盗链
    原生php登陆注册
    thinkPHP的D方法和M方法用法和区别
    Python中类与对象的关系
    解决_CRT_SECURE_NO_WARNINGS 警告
    骨头汤、豆浆、海带都不能补钙,最补钙的食物是它
    蘑菇鸡蛋汤
    CString和string在unicode与非unicode下的相互转换(转)
    【CString与string转换】不存在从 "LPWSTR" 转换到 "std::basic_string<char, std::char_traits<char>, std::allocator(转)
    LINK : fatal error LNK1104: 无法打开文件“mfc71.lib”(转)
  • 原文地址:https://www.cnblogs.com/poloyy/p/13034592.html
Copyright © 2011-2022 走看看