用mocha写分页的测试用例
2015-09-11 19:02
190 查看
mocha的异步API测试是一个非常好的功能,能让我们直接在terminal测试API是否有效,不需要在浏览器一个个访问,并且还可以对非法参数、非法操作等等加以检测。
一下是一个非常基本的分页测试用例写法:
var assert = require("assert")
var async = require("async");
module.exports = function() {
describe('lottery api test', function() {
//没有token不能获取
it('failed to get without token', function(done){ //外部函数
async.series({
action: function(callback){
query('/api的路径', {token: 'basic-none'})//query方法需要自己定义
.then(function() { //进去之后代表进入api成功,完成。
done();
}, function(err){ //进入api失败
callback(new Error("should not get "));
});
}
}, function(err, results){ //外部函数执行失败
done(err);
});
});
//有token可以获取
it('success to get with token', function(done){
async.series({
action: function(callback){
query("/api的路径", {token: 'basic-valid'})
.then(function() {
done();
}, function(err) {
console.info(err);
callback(new Error('should able to get '));
});
}
}, function(err, results) {
done(err);
});
});
//获取
it('success to get lottery history', function(done) {
async.series({
action: function(callback) {
base.get('/api的路径', {
token: 'basic-valid'
}).then(function(results) {
done();
}, function(err) {
console.info(err);
callback(new Error('can not get '));
});
}
}, function(err, results) {
done(err);
});
});
//测试分页,基本思路,利用分页分别得到page、limit的前两个数据,并进行比较,如果相等即分页逻辑正确。
//参数解释:page表示当前的页数,limit为每页条数的限制(即每页有limit条记录)
var firstReply;
var secReply;
it('success to get paging', function(done) {
async.series({
action: function(callback) {
base.get('/api的路径?page=1&limit=2', { //获取第一页,每页两条数据,即前两条数据,分别赋值给firstReply和secReply
token: 'basic-valid'
}).then(function(results) {
firstReply = results.result[0].id;
secReply = results.result[1].id;
done();
}, function(err) {
console.info(err);
callback(new Error('can not paging'));
});
}
}, function(err, results) {
done(err);
});
});it('success to test first paging', function(done) {
async.series({
action: function(callback) {
base.get('/api的路径?page=1&limit=1', { //获取第一页,每页一条数据,即第一条数据,
token: 'basic-valid'
}).then(function(results) {
assert.equal(results.result.length, 1);//api获取的结果是否唯一
assert.equal(results.result[0].id, firstReply);//与firstReply比较
done();
}, function(err) {
console.info(err);
callback(new Error('can not get first paging'));
});
}
}, function(err, results) {
done(err);
});
});it('success to get second paging', function(done) {
async.series({
action: function(callback) {
base.get('/api的路径?page=2&limit=1', {//同上
token: 'basic-valid'
}).then(function(results) {
assert.equal(results.result.length, 1);
assert.equal(results.result[0].id, secReply);
done();
}, function(err) {
console.info(err);
callback(new Error('can not get second paging'));
});
}
}, function(err, results) {
done(err);
});
});
}
一下是一个非常基本的分页测试用例写法:
var assert = require("assert")
var async = require("async");
module.exports = function() {
describe('lottery api test', function() {
//没有token不能获取
it('failed to get without token', function(done){ //外部函数
async.series({
action: function(callback){
query('/api的路径', {token: 'basic-none'})//query方法需要自己定义
.then(function() { //进去之后代表进入api成功,完成。
done();
}, function(err){ //进入api失败
callback(new Error("should not get "));
});
}
}, function(err, results){ //外部函数执行失败
done(err);
});
});
//有token可以获取
it('success to get with token', function(done){
async.series({
action: function(callback){
query("/api的路径", {token: 'basic-valid'})
.then(function() {
done();
}, function(err) {
console.info(err);
callback(new Error('should able to get '));
});
}
}, function(err, results) {
done(err);
});
});
//获取
it('success to get lottery history', function(done) {
async.series({
action: function(callback) {
base.get('/api的路径', {
token: 'basic-valid'
}).then(function(results) {
done();
}, function(err) {
console.info(err);
callback(new Error('can not get '));
});
}
}, function(err, results) {
done(err);
});
});
//测试分页,基本思路,利用分页分别得到page、limit的前两个数据,并进行比较,如果相等即分页逻辑正确。
//参数解释:page表示当前的页数,limit为每页条数的限制(即每页有limit条记录)
var firstReply;
var secReply;
it('success to get paging', function(done) {
async.series({
action: function(callback) {
base.get('/api的路径?page=1&limit=2', { //获取第一页,每页两条数据,即前两条数据,分别赋值给firstReply和secReply
token: 'basic-valid'
}).then(function(results) {
firstReply = results.result[0].id;
secReply = results.result[1].id;
done();
}, function(err) {
console.info(err);
callback(new Error('can not paging'));
});
}
}, function(err, results) {
done(err);
});
});it('success to test first paging', function(done) {
async.series({
action: function(callback) {
base.get('/api的路径?page=1&limit=1', { //获取第一页,每页一条数据,即第一条数据,
token: 'basic-valid'
}).then(function(results) {
assert.equal(results.result.length, 1);//api获取的结果是否唯一
assert.equal(results.result[0].id, firstReply);//与firstReply比较
done();
}, function(err) {
console.info(err);
callback(new Error('can not get first paging'));
});
}
}, function(err, results) {
done(err);
});
});it('success to get second paging', function(done) {
async.series({
action: function(callback) {
base.get('/api的路径?page=2&limit=1', {//同上
token: 'basic-valid'
}).then(function(results) {
assert.equal(results.result.length, 1);
assert.equal(results.result[0].id, secReply);
done();
}, function(err) {
console.info(err);
callback(new Error('can not get second paging'));
});
}
}, function(err, results) {
done(err);
});
});
}
相关文章推荐
- iOS自定义NavigationBar
- 通过命令编译的项目 导入 到eclipse
- 如何获取短信验证码
- BitmapShader初步认识
- 处理样本分布不平衡,偏斜比较厉害的方法总结
- JAVA- 学习日记-命令行运行java程序
- 详解C++编程中用数组名作函数参数的方法
- 使用Keychain存储用户敏感信息
- KL46 custom board SWD reset is never asserted - SWS Waveform
- Centos7 安装kilo-5 controller(nova)
- 无聊
- linux下tty,控制台,虚拟终端,串口,console(控制台终端)详解http://blog.csdn.net/liaoxinmeng/article/details/5004743
- iOS开发-------简单通讯录(UITableView和CoreData的应用)
- HTTP协议详解
- win2d绘制图片
- (4.3.1.15)android.app.FragmentManager 与 android.support.v4.app.FragmentManager带来的若干Error
- JNI(三)、java代码传递int、String、int[] 并 调用C 代码
- hdu 5162 Jump and Jump...(水题)
- RoboEarth 1
- php 常用的内置函数