基於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();
                    }
                }
            });
        })
    }
});

 

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