天天看点

web前端自动接口扫描

第一次发博客,还请大家多多指教。

目前在做的项目是前后台分离的,使用wiremock造的数据,但是接口一般都是后台推动的(版本经理在后台那边)。很多次后台改动了接口往往没有告知前台,导致联调时候经常出现接口错误,而且很多时候各个接口之间有依赖关系,如果前面的接口没法测试后续的接口也没法进行。基于此,很有必要开发一套能够自动测试接口的方法。

直接上代码,testPortForConsole.js:

var postDatas = [
    {
        url : '/getStudents.do'  ,
        portName:'',
        description :'',
        data:{
            serviceName : "getStudents",
            class : "six",
            grade : "two"
        }
    },
    {
        url : "/getScore.do",
        portName:'',
        description :'',
        data:{
            serviceName : "getScore",
            studentID : "08070146",
            subject : "Math"
        }
    }
    //这里每一个元素对应一个接口
];
(function(){
    localStorage.removeItem('success');
    localStorage.removeItem('failed');
    var send = function(url,param,portName){
        $.ajax({
            url : url,
            type: 'POST',
            data: JSON.stringify(param),
            dataType: 'application/json,text/plain.*/*'
        })
        .success(function(data){
            localStorage.setItem('success',localStorage.getItem('success')
                + portName + '接口返回成功|');
        })
        .error(function(data){
            localStorage.setItem('failed',localStorage.getItem('failed')
                + portName + '接口返回失败|')  ;
            throw  portName + '接口返回失败';
        })
    };
    for(var s = 0,len = postDatas.length;s < len;s++){
        send(postDatas[s].url,postDatas[s].data, postDatas[s].portName);
    }
})();
           

如果接口过多的话可以考虑使用grunt命令来从项目中合并各个下发的请求的mock数据,这样便于分模块维护和管理。

module.exports = function (grunt) {
    // 项目配置
    grunt.initConfig({
        pkg: grunt.file.readJSON('package.json'),
        concat: {
            options: {
                banner: '[\n',
                separator:',\n',
                footer:']',
                stripBanners:'true'
            },
            build: {
                src: 'src/**/*.json',
                dest: 'dest/dest.json'
            }
        }
    });
    grunt.loadNpmTasks('grunt-contrib-concat');
    grunt.registerTask('default', ['concat']);
}
           

这样直接在原有的项目中直接将testPortForConsole.js中的代码拷贝运行即可自动完成接口的扫描。扫描的结果都保存在localStorage中,通过如下方法可以得到

console.dir(localStorage.getItem('success').split('|'));

console.dir(localStorage.getItem('failed').split('|'));

新手求支持 ~_~.

转载于:https://www.cnblogs.com/xianZJ/p/4534386.html