基于mocha的简单定时api测试

由 漆黑菌 于 2019年04月15日 发布

业务场景描述

新入职公司后,所在小组有个问题。后端api开发进度有时会和说好的不一样,所以前端会有人在后端说通了实际上没通的接口上浪费时间。于是老大就让我写个小工具,下次后端说接口好了的时候跑一下,看看是不是真的好了。

思路

这个需求主要可以分成两部分,一个是定时任务,一个是api测试。

定时任务

其实Linux和Windows都有完善的系统级定时任务功能,但是团队有用Mac os的也有用Windows的,所以选择使用nodejs中提供的child_process子任务模块+第三方的node-schedule定时执行模块来完成。

照例先上文档child_process中文文档node-schedule文档

child_process

child_process为node提供了开启子线程执行脚本的能力。child_process中我们用到的函数主要有两个,一个是exec,一个是spawn。其中exec是等脚本一次性执行完成后把返回的内容打印出来,spawn则是一边执行一边打印的。这次选择的测试框架mocha在执行后会返回1退出码,使用spawn函数来执行会报错,故使用exec函数。

node-schedule

node-schedule算是set定时器系列的威力加强版可以指定在符合条件的时间执行。

api测试

api测试主要要发起HTTP请求,目前选用supertest来提供链式调用的发起HTTP能力。测试框架采用mocha这也是目前比较流行的测试框架之一,webstorm也提供了非常好的内建支持。对于得到的数据进行处理需要引入断言库用来让测试框架知道返回结果是否符合预期,这次采用chai执行起来比较语义化,文档也比较好找。

supertest

supertest官方文档下面的例子写的很详细。

mocha

mocha官方文档,阮一峰也有一篇不错的入门测试框架 Mocha 实例教程

mocha有个不错的插件mochawesome可以在本地生成一个比较漂亮的HTML页面,我们可以用来记录最近一次的测试数据。安装后执行命令行时加上--reporter mochawesome即可调用。

chai

chai在网上找到一篇不错的文档Chai.js断言库API中文文档