之前有过一篇比较简单的关于 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 一介布衣博客