美文网首页TDD(测试驱动开发)
幸福感爆棚的Node测试框架

幸福感爆棚的Node测试框架

作者: 77即是正义 | 来源:发表于2017-04-06 19:20 被阅读64次

最近软件测试课上需要我们介绍一个测试工具,因为我沉迷node,所以只好拿出这一套幸福感爆棚的测试框架了,Mocha & Chai。

Mocha

简介

Mocha是一个能够运行在Node和浏览器中的多功能的JavaScript测试框架。作为一个测试框架,最主要的工作是提供了丰富的测试报告模块帮助问题的分析定位,并且对断言模块进行了更方便的分类封装。所以Mocha是能够很轻松的调用selenium webdriver之类的测试工具的。

开始

describe('example 1', function () {
    it('1加1等于2', function () {
      expect(add(1, 1)).to.be.equal(3);
    })
  });

这里是一个很简单的小例子,是对加法进行单元测试。

describe测试套件,表示一组相关的测试。它是一个函数,第一个参数是测试套件的名称,第二个参数是一个实际执行的函数。主要是用 describe 来对代码进行分块。在保留字中有它的同功能关键字 context

it测试用例,表示一个单独的测试,是测试的最小单元。在一个 describe 中可以包含多个 it 。并且如果 it 中包含多个断言,第一个断言出现错误时,后面的将不会执行。在保留字中有它的同功能关键字 specify

这里主要记录一些我觉得比较有意思的部分,对于Mocha的系统讲解就不赘述,有兴趣的可以看看Mocha.js官方文档翻译 —— 简单、灵活、有趣测试框架 Mocha 实例教程

测试状态

测试结果主要分为3种状态,成功、失败、挂起。这里主要说一下挂起,挂起有可能是因为没有传入回调函数的测试用例,即 it 中没有传入回调函数。还有一种可能是没有设置超时检查的超时函数,所以我们需要考虑超时测试。

超时测试可以在套件级设置,也可以在用例级设置和钩子级设置。

// 在套件级设置,只要用例级没有覆盖则整个套件有效
describe('example 1', function () {
   this.timeout(500);
   
   it('不超过500ms', function(done) {
       setTimeOut(done, 300);
   })
});

// 在用例级设置
describe('example 2', function () {
   it('不超过500ms', function(done) {
       this.timeout(500);
       setTimeOut(done, 300);
   })
})

// 在钩子级设置
describe('example 3', function () {
   beforeEach(function(done) {
       this.timeout(3000); 
       setTimeout(done, 2500)
   })
})

异步测试

因为是基于nodejs的框架,所以异步是在所难免的。但是同样可以promise来优雅的将异步处理为同步了。

const assert = require('assert')

it('应该结束这个测试用例', function (done) {
  return new Promise(function (resolve) {
    assert.ok(true)
    resolve()
  })
})

定制测试方案

在测试程序当中,可能会因为测试方案的改变,需要对某一些测试套件进行测试,而有一些套件不需要测试。这时候Mocha就提供了定制的功能。

  • 独占模式(describe.only / it.only):设置后仅会运行独占的测试套件或者用例。
  • 跳过测试(describe.skip / it.skip):设置后会跳过相应的测试套件或用例。
  • 重试测试(this.retries(4)):可以通过这种方法把失败的测试重新运行几次,设置方法与超时测试类似,可以在套件或者用例中设置。但是这个特性被设计用于资源(数据)不容易被仿造的端到端测试,不推荐单元测试

测试报告

测试报告是测试过程当中非常重要的产物。Mocha提供了很多有趣的测试报告,设置测试报告的方法是:

$ mocha test.js --reporter landing

--reporter 后面填写测试报告模板的名字,这里推荐一下landing和默认的SPEC,当然接下来要介绍的就是效果更好的网页测试报告。

首先需要安装 mochawesome,然后使用就行。

$ npm install --save mochawesome
$ mocha test.js --reporter mochawesome

会在该文档中新建mochawesome-reports文档,里面就是报告。

配置文件

通过配置文件,可以简化我们的命令。比如我们在mocha.opts中添加:

--reporter tap
--recursive
--growl

然后在运行 $ mocha ,就相当于我们运行:

$ mocha --recursive --reporter tap --growl

如果测试用例不是在当前目录,可以在配置文件前写文档名。

file
--reporter tap
--recursive
--growl

Chai

Mocha作为测试框架可以使用多种断言库,这里我选用了Chai。chai.js支持BDD风格的expect/should API以及TDD风格的Assert API。但是should断言是不支持IE的并且稳定性也没有expect好,所以更推荐使用expect断言。

对于API的解释可以查看Chai.js断言库API中文文档

相关文章

网友评论

    本文标题:幸福感爆棚的Node测试框架

    本文链接:https://www.haomeiwen.com/subject/fvgqattx.html