e2e 自動化集成測試 架構(gòu) 京東 商品搜索 實(shí)例 WebStorm Node.js Mocha WebDriverIO Selenium Step by step 二 圖片驗(yàn)證碼的識別 , 下面講一下Node.js中如何訪問數(shù)據(jù)庫, 在做自動化測試過程中, 經(jīng)常可能遇到需要到數(shù)據(jù)庫取值,或是更新值。來驗(yàn)證頁面上的
e2e 自動化集成測試 架構(gòu) 京東 商品搜索 實(shí)例 WebStorm Node.js Mocha WebDriverIO Selenium Step by step 二 圖片驗(yàn)證碼的識別”,
下面講一下Node.js中如何訪問數(shù)據(jù)庫, 在做自動化測試過程中, 經(jīng)常可能遇到需要到數(shù)據(jù)庫取值,或是更新值。來驗(yàn)證頁面上的數(shù)據(jù)正確性。 之前,在google, baidu.com上找了非常多的文章關(guān)于Node.js如何訪問Sql Server的文章, 都是不行的, 我想是因?yàn)椋?Node.js的開源性, 對于MongoDB, Mysql, 等數(shù)據(jù)庫訪問是有請多的模塊支持。但對于Sql server就只有微軟寫的驅(qū)動, 但是由于安裝非常復(fù)雜, 我就沒安裝成功過。 最后,在baidu.com的時候,找到了一個牛人寫的模塊叫 mssqlhelper https://www.npmjs.org/package/mssqlhelper, 雖然有蠻多的不支持, 但是對于一些簡單的sql操作,還是可以的。
如下是Node.js使用, 我將它們做了一下封裝,可以提供select, add, delete,update操作
var db = require('./dbHelper');
function select(sqlScript, EntityName, topNum, callback)
{
if(topNum == null)
{
topNum = '';
}
if(topNum == '')
{
sqlScript = sqlScript.replace('select', 'select @Param1 Parmal1, ')
}
else
{
sqlScript = sqlScript.replace('select', 'select top '+ topNum +' @Param1 Parmal1, ')
}
db.config({
host: 數(shù)據(jù)庫地址
,port: 1433
,userName: 用戶名
,password: 密碼
,database: 數(shù)據(jù)庫名
});
console.log('執(zhí)行 SQL ' + sqlScript.green);
db.query( sqlScript
,{
Param1: { type : 'NVarChar', size: 7,value : 'systemDefault' }
}
,function(res){
if(res.err)throw new Error('database error:'+res.err.msg);
if(res.tables.length == 0){
console.log('無任何記錄返回');
//hrow new Error('無任何記錄返回');
return;
}
var rows = res.tables[0].rows;
if(rows.length == 0){
callback('');
}
else {
var jsonString = toJson(res.tables[0], EntityName);
var result = JSON.parse(jsonString);
console.log('數(shù)據(jù)庫查詢結(jié)果' + jsonString.green);
callback(result);
// var columnLength = rows[0].metadata.columns.length;
// for (var i = 0; i < rows.length; i++) {
// console.log(rows[i].getValue('Name'));
// }
}
}
);
};
function exeScript(sqlscript, callback){
db.query(
sqlscript
,{
}
,function(res){
if(res.err)throw new Error('database error:'+res.err.msg);
callback();
}
);
};
function del(sqlscript,callback){
exeScript(sqlscript,callback);
}
function update(sqlscript,callback){
exeScript(sqlscript,callback);
}
function add(sqlscript,callback){
exeScript(sqlscript,callback);
}
//convert table to json
function toJson(data, entityName)
{
var jsonString;
if (data != undefined && data.rows.length > 0)
{
var rowLen=data.rows.length;
var colLen=data.rows[0].metadata.columns.length;
jsonString="{";
jsonString+="\""+entityName+"\":[";
for (var i = 0; i < rowLen; i++)
{
jsonString+="{";
for (var j = 1; j < colLen; j++)
{
if (j < colLen - 1)
{
jsonString+="\"" + data.rows[0].metadata.columns[j].name + "\":" + "\"" + data.rows[i].getValue(j)+ "\",";
}
else if (j == colLen - 1)
{
//console.log(j + ' ' + i );
jsonString+="\"" + data.rows[0].metadata.columns[j].name + "\":" + "\"" + data.rows[i].getValue(j) + "\"";
}
}
if (i == rowLen - 1)
{
jsonString+="}";
}
else
{
jsonString+="},";
}
}
jsonString+="]}";
return jsonString;
}
return jsonString;
}
exports.Add=add;
exports.Delete=del;
exports.Update=update;
exports.Select=select;
聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com