精华 node.js使用mocha自动化测试程序
发布于 5 年前 作者 zzhi191 24041 次浏览 最后一次编辑是 3 年前 来自 分享

之前有过一篇比较简单的关于 mocha 做自动化测试的帖子, mocha测试 今天稍晚详细点说下. 常见的开源项目你都会发现test目录,当然我们自己创建的项目建议也加上此目录,在这个目录下做自动化测试.目前node.js下做自动化测试的工具也很多,今天我们主要来介绍下如何使用mocha进行自动化测试. 安装 mocha npm install -g mocha

这样你就可以创建测试脚本了,如下:

var assert = require("assert");
describe('Array', function(){
  describe('#indexOf()', function(){
    it('should return -1 when the value is not present', function(){
      assert.equal(-1, [1,2,3].indexOf(5));
      assert.equal(-1, [1,2,3].indexOf(0));
    })
  })
})

上面是官网上的一个例子,直接拿过来说明一下.

assert 是一个断言模块,node.js源码中包含此模块,当然你可以选择其他第三方的断言包来做测试.

上面的例子就是想对Array类下 indexOf 方法做一个测试,断言 indexOf 得到的值是否等于前面的赋值. 实际中的测试都比较复杂,可能测试文件 a.js 和测试文件 b.js 是有关系的,也就是说 b.js 中用到的参数都是又 a.js 提供的.

这是可能要借助一个全局变量文件 globalConstant.js 文件,内容如下:

global.global_user={}; 很简单的一个全局用户变量,那么在测试a.js的时候我们需要给这个全局变量赋值,然后测 b.js 的时候再使用这个变量值.

a.js 的内容如下:

var assert = require("assert");
require('../utils/FakeHTTP');
 
var game_user = {
        user_id: 0,
        token: ''
};
 
var userid='zhangzhi',
    password='000000';
 //这里的 userid 和 password 俩个参数完全可以设置 before(function(){ ...} 从前面的文件中导出,这里我们简单直接定义.
 
 //after 是测试完成后把一些后面文件需要的参数全部导出.
after(function() {
        global_share_data.game_user = game_user;
});
 
describe("Email User", function() {
    //定义user变量
    var game_user = {
    game_id: 0,
        user_id: 0,
        token: ''
    };
     
    it("login by userID and password", function(done) {
            FakeHTTP.request('/account/login', game.makeSign({
                user_id: userid,
                password: password
            }), function(status, res) {
                assert.equal(status, 200);
                assert.equal(!res.error_code, true, res.error);
                assert.ok(res.user_id, 'Not found user_id');
                assert.ok(res.user_token, 'Not found user token');
                game_user.game_id = res.gameID;
                game_user.user_id = res.userid;
                game_user.token = res.user_token;
                done();
            });
        });
});

上面有注释,大概需要大家了解的一个是 before 一个是 after

before 用在测试用例之前,就是需要提前准备的一些参数,一般是此测试文件之前的文件导出的.

after 是用在测试用例执行完成后,需要导出的一些参数以供后面的测试文件使用这些参数,(所以我上面注释了 userid 和 password 应该是前面文件after 以后,在 a.js before 里使用即可,就不需要在文件里面指定变量值了.

ok,上面的 a.js 测试自行完成后导出了 game_user 我们在b.js 文件里就可以使用这个导出变量了.如下代码:

更多内容请访问 原文地址: http://www.yijiebuyi.com/blog/45558044cdaab883a1fd424c238198c3.html 一介布衣博客

3 回复

代码可以用 markdown 标记一下

回到顶部