e2e 自动化集成测试 架构 实例 WebStorm Node.js Mocha WebDriverIO Selenium Step by step (三) SqlServer数据库的访问
上一篇文章“e2e 自动化集成测试 架构 京东 商品搜索 实例 WebStorm Node.js Mocha WebDriverIO Selenium Step by step 二 图片验证码的识别”,
下面讲一下Node.js中如何访问数据库, 在做自动化测试过程中, 经常可能遇到需要到数据库取值,或是更新值。来验证页面上的数据正确性。 之前,在google, baidu.com上找了非常多的文章关于Node.js如何访问Sql Server的文章, 都是不行的, 我想是因为, Node.js的开源性, 对于MongoDB, Mysql, 等数据库访问是有请多的模块支持。但对于Sql server就只有微软写的驱动, 但是由于安装非常复杂, 我就没安装成功过。 最后,在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: 数据库地址
,port: 1433
,userName: 用户名
,password: 密码
,database: 数据库名
});
console.log('执行 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('数据库查询结果' + 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;
e2e 自动化集成测试 架构 实例 WebStorm Node.js Mocha WebDriverIO Selenium Step by step (三) SqlServer数据库的访问的更多相关文章
- e2e 自动化集成测试 架构 实例 WebStorm Node.js Mocha WebDriverIO Selenium Step by step (六) 自动化测试结构小节
上一篇‘e2e 自动化集成测试 架构 京东 商品搜索 实例 WebStorm Node.js Mocha WebDriverIO Selenium Step by step (五) 如何让窗体记录登录 ...
- e2e 自动化集成测试 架构 实例 WebStorm Node.js Mocha WebDriverIO Selenium Step by step (四) Q 反回调
上一篇文章“e2e 自动化集成测试 架构 京东 商品搜索 实例 WebStorm Node.js Mocha WebDriverIO Selenium Step by step (三) SqlServ ...
- e2e 自动化集成测试 架构 实例 WebStorm Node.js Mocha WebDriverIO Selenium Step by step (二) 图片验证码的识别
上一篇文章讲了“e2e 自动化集成测试 架构 京东 商品搜索 实例 WebStorm Node.js Mocha WebDriverIO Selenium Step by step 一 京东 商品搜索 ...
- e2e 自动化集成测试 架构 实例 WebStorm Node.js Mocha WebDriverIO Selenium Step by step (一) 京东 商品搜索
之前有发布一篇文章“e2e 自动化集成测试 环境搭建 Node.js Selenium WebDriverIO Mocha Node-Inspector”, 主要是讲了,如何搭建环境, 其中开发环境使 ...
- e2e 自动化集成测试 架构 实例 WebStorm Node.js Mocha WebDriverIO Selenium Step by step (五) 如何让窗体记录登录状态Session
在写自动化测试的Node.js脚本时, 时常需要测试所写的case, 可能都需要去重新登录一遍,这将相当的耗时, 好在Selenium都借了Session的机制, 如果在最初的浏览器没有关闭的情况下, ...
- e2e 自动化集成测试 环境搭建 Node.js Selenium WebDriverIO Mocha Node-Inspector
Node.js已经出来了许多年载,至今才开始接触.周未在家闲来无事,一时心血来潮,Google了大量的文章,经过实验,终于可以把整个环境给搭起来, 废话不多话,请看步骤. 特别注意, 本文章是针对Wi ...
- 前端自动化之路之gulp,node.js
随着现在前端技术的不断发展,和各个公司对前端项目开发更新速度的要求,前端自动化越来越受到大家的重视,之前传统的前端开发方式已经越来越不能满足开发的需求了,于是各种自动化工具随之产生了.而gulp就是其 ...
- 【nodejs笔记1】配置webstorm + node.js +express + mongodb开发博客的环境
1. 安装webstorm 并破解 2. 安装node (以及express框架) 至官网下载并安装.(http://nodejs.org)v0.10.32 msi 安装后测试,打开命令行, c ...
- WebStorm+Node.js开发环境的配置
1 下载地址: webstorm:http://www.jetbrains.com/webstorm node.js:https://nodejs.org/download/ 2 安装node.js ...
随机推荐
- 在cmd命令行下登录本地oracle数据库与服务器上的oracle
一.本地登录 cmd->sqlplus 用户名/密码@数据库名 (as sysdba)->enter注:如果此用户名不是系统用户sys,scott,system就不需要加as sysdba ...
- Raft、Zab
Raft.Zab 引言 <分布式系统理论进阶 - Paxos>介绍了一致性协议Paxos,今天我们来学习另外两个常见的一致性协议--Raft和Zab.通过与Paxos对比,了解Raft和Z ...
- SQL Server 和 Oracle 以及 MySQL 有哪些区别?
SQL,在这里我理解成SQL Server.三者是目前市场占有率最高(依安装量而非收入)的关系数据库,而且很有代表性.排行第四的DB2(属IBM公司),与Oracle的定位和架构非常相似,就不赘述了. ...
- 修改radio、checkbox、select默认样式的方法
样式 radio select checkbox 兼容性 现在前端页面效果日益丰富,默认的input组件样式显然已经不能满足需求.趁着这次开发的页面中有这方面的需求,在这里整理一下修改radio.ch ...
- 3.4 spring- lookup-method 子元素的使用与解析
1. lookup-method的应用: 1.1 子元素lookup-method 似乎不是很常用,但是在某些时候他的确是非常有用的属性,通常我们称它为 "获取器注入" . 引用 ...
- OpenSessionInViewFilter 的配置及替代方案(转)
鸣谢:http://justsee.iteye.com/blog/1174999,http://blog.csdn.net/sunsea08/article/details/4545186 Sprin ...
- ExtJS4.2学习(11)可拖放的表格(转)
鸣谢:http://www.shuyangyang.com.cn/jishuliangongfang/qianduanjishu/2013-11-18/180.html --------------- ...
- hdu 1561
有依赖的背包,用树形dp解 #include<iostream> #include<cstdio> #include<cstring> #include<al ...
- sql删除wordpress没用的postmeta记录
支持多作者的wordpress博客,有时需要审核他们的文章内容,虽然UGC(User-generated content)整体是好的,但是也要控制一下质量,实在不相关或spam的文章就要毫不手软的删除 ...
- 关于NGUI中的自适应和对齐机制
原地址:http://blog.sina.com.cn/s/blog_62df69790101gy7t.html 1 关于美术效果图 美术出效果图总是基于某个固定尺寸.移动设备的分辨率却有太多不同的方 ...