用mocha写分页的测试用例

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);
            });
        });
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值