3.3.5 自定义动态数据库验证函数
在本章的前几个小节已经把ADO的一些比较常用和基本的用法都介绍了,那么有了技能就需要开始进一步的实践了,一切都是为了最终的项目实际应用。那么接下来看一下实际的自动化测试过程中是如何来规范数据库验证的。
首先,要做数据库验证,先要选取对应的方法,数据库验证有两种,一种是QTP自带的数据库查询来验证,另一种就是整个章节一直在讲解的ADO组件。这里就选择ADO组件来作为验证方法,具体原因已经在第一小节中讲解过。
其次,还需要注意数据库是各种各样的,每个数据库连接字符串会有所区别,需要另外定制,这在第2小节的构建数据库连接字符串里已经详细讲解过,面对这样的情况就必须把这些数据作为变量分离出来,以便随时可以进行方便的配置。而这里常常会使用环境变量或者自定义外部XML文件作为一个数据配置文件来配合自动化数据验证。
最后,还需要考虑的是,数据库验证是属于测试流程中的一个重要的步骤,使用的频率也非常高,数据库验证的这个过程如果可以复用,那么就可以省掉很多多余的工作,提高了数据库验证的工作效率。
实例:使用QTP来验证数据库user表中name为51testing的age
预期:age = 50。
在这里直接选取之前第3小节中的实例,并在此基础上进行数据抽离和封装,脚本如下所示:
'************************************************************** 'Description: 数据库验证函数 'Argument: '[Constr] 数据库连接字符串 '[sqlStr] sql语句 '[verifyProperty] 需要验证的字段名 '[expectValue] 验证预期值 '************************************************************** Function VerifySQLData(conStr,sqlStr,verifyProperty,expectValue) '创建数据库连接对象 Set adoConn = CreateObject("adodb.Connection") '利用数据库连接字符串打开数据库 adoConn.Open conStr '执行sql语句并返回对应的结果集 Set adoRst = adoConn.Execute(sqlStr) '获得实际值 actualValue = adoRst.Fields.Item(verifyProperty).Value '对比预期值与实际值 If cstr(expectValue) = cstr(actualValue) Then Reporter.ReportEvent micPass,"SQL_DATA_CHECK", _ "[ expectValue = actualValue = " + cstr(actualValue)+" ]" Else Reporter.ReportEvent micFail,"SQL_DATA_CHECK", _ "[ expectValue = " + cstr(expectValue) + _ " ;actualValue = " + cstr(actualValue)+" ]" End If '关闭数据库 adoConn.Close '释放数据库对象 Set adoConn = Nothing End Function |
分析:
从以上脚本中可以看出,之前的脚本已经被封装成了function函数,并且一共抽离出了4大参数:conStr、 sqlStr、verifyProperty、expectValue 。constr为数据库连接字符串,由于数据库可能会变化,因此作为参数处理,sqlstr为SQL语句,这个肯定需要分离,这样可以随意定制需要的查询语句,verifyProperty以及expectValue为需要验证的数据结果集的字段名和它的预期值,这两个参数也是必不可少的。最后在脚本的中间加上了判断,并利用QTP的保留对象Reporter写入执行结果中。这样,一个数据库验证函数就全部封装完毕了。