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