基于python/nodejs实现自动化测试

1.在ops系统的接口使用pageCode+opCode进行改造的过程中,通过fiddler工具,拦截ops系统中的所有发出的Ajax请求,收集每个请求发出的参数,进行评价;

2.为了评估pageCode+opCode的正确性,根据url找到数据库中对应的menu_id的值,如果这个集合内存在pageCode+opCode的值,就说明是正确的;十分的高效。

3.其实就是通过fiddler工具获取到所有的请求链接,生成一个文件,再通过Python去读取url上的两个code值

   并根据url地址去数据库找到对应的menu_code集合,在这个集合中,应该存在一个menu_code=pageCode+opCode,存在则说明是正确的,产生一个成功的记录;否则是错误的,产生一个失败记录。

4.这个功能使用nodejs也可以实现。实现的主要思路和代码如下所示,通过这个例子初步理解测试人员的自动化测试的基本过程:

/**
 * Created by 80002909 on 2019/4/16.
 */
var mysql      = require('mysql');
var connection = mysql.createConnection({
    host     : '10.203.12.190***',
    port : '3306**',
    user     : 'opsdb***',
    password : '***sf123456',
    database : '****opsdevelop'
});

connection.connect();
var fs = require("fs");
var async = require('async');
//数组去重removeDuplication_arr
var removeDuplication_arr = function (array) {
    var temp = []; //一个新的临时数组
    for(var i = 0; i < array.length; i++){
        if(temp.indexOf(array[i]) == -1){
            temp.push(array[i]);
        }
    }
    return temp;
};

// 异步读取
fs.readFile('新产品支持.txt', function (err, data) {
    if (err) {
        return console.error(err);
    }
    var content = data.toString();
    var content_toArr = content.split('\r\n');
    content_toArr.length = content_toArr.length-1;
    //数组去重
    content_toArr = removeDuplication_arr(content_toArr);
    //console.log(content_toArr.length);
    var lastRes = [];
    for(var index in content_toArr){
        var single = content_toArr[index];
        var url_start_index = single.indexOf('.com') != -1 ? single.indexOf('.com'): null ;
        var url_end_index = single.indexOf('?') != -1 ? single.indexOf('?'): null ;
        var pageCode_index = single.indexOf('pageCode') != -1 ? single.indexOf('pageCode'): null ;
        var opCode_index = single.indexOf('opCode') != -1 ? single.indexOf('opCode'): null ;
        var obj = {
            url:null,
            pageCode:null,
            opCode:null,
            res:null
        };
        if(pageCode_index && opCode_index){
            obj.url = single.substring(url_start_index+4,url_end_index);
            obj.pageCode = single.substring(pageCode_index+9,opCode_index-1);
            obj.opCode = single.substring(opCode_index+7,opCode_index+9);
            obj.res = obj.pageCode + '' + obj.opCode
        }
        lastRes.push(obj);
    }
    //console.log(lastRes);
    var ws = fs.createWriteStream(__dirname + '/新产品支持s.txt', {start: 0});
    if(lastRes.length>0){
        lastRes.forEach(function(item, index) {
            //console.log(item);
            var sql = 'select * from ts_module where ACTION_URL = ' + connection.escape(item.url);
            connection.query(sql, function (error, results, fields) {
                if (error) throw error;
                if (results.length > 0) {
                    for (var i = 0; i < results.length; i++) {
                        var sjngle = results[i];
                        //console.log(item.res, sjngle.MENU_CODE);
                        if (item.res == sjngle.MENU_CODE) {
                            var w_data = '接口:' + item.url + ', resCode:' + item.res + ', sql_menu_code:' + sjngle.MENU_CODE + ',   succ\r\n';
                            var buffer = new Buffer(w_data);
                            ws.write(buffer, 'utf8', function (err, buffer) {
                                console.log(arguments,err,buffer);
                                //console.log('写入完成,回调函数没有参数')
                            });
                            if(index == lastRes.length-1){
                                //写入文件流最后要写入的内容
                                ws.end('再见');
                                //断开数据库
                                connection.end();
                            }
                            break;
                        }
                    }
                    if (i == results.length) {
                        var w_data = '接口:' + item.url + ', resCode:' + item.res + ', sql_menu_code:noCode' + ',   fail\r\n';
                        var buffer = new Buffer(w_data);
                        ws.write(buffer, 'utf8', function (err, buffer) {
                            console.log(arguments,err,buffer);
                            //console.log('写入完成,回调函数没有参数')
                        });
                        if(index == lastRes.length-1){
                            //写入文件流最后要写入的内容
                            ws.end('再见');
                            //断开数据库
                            connection.end();
                        }
                    }
                } else {
                    var w_data = '接口:' + item.url + ', resCode:' + item.res + ', sql_menu_code:noCode' + ',   fail\r\n';
                    var buffer = new Buffer(w_data);
                    ws.write(buffer, 'utf8', function (err, buffer) {
                        console.log(arguments,err,buffer);
                        //console.log('写入完成,回调函数没有参数')
                    });
                    if(index == lastRes.length-1){
                        //写入文件流最后要写入的内容
                        ws.end('再见');
                        //断开数据库
                        connection.end();
                    }
                }
            });
        })
    }
});

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章