51Testing丛书连载:(四十八)精通QTP——自动化测试技术领航

发表于:2012-2-17 10:49

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:余杰 赵旭斌    来源:51Testing软件测试网

分享:

3.4.3.2  高效数据字典的实现

  QTP自带有DataTable,相信大多数自动化测试工程师都会使用DataTable来作为数据驱动测试,它与QTP结合的非常好,并且使用起来也非常简单。但是由于QTP源代码是封闭的,因此功能上存在着一定的局限性使得我们无法对其进行扩展或者更改。但如果使用Dictionary字典对象与ADO结合就可以打造一个完美、高效、灵活的外部自定义DataTable,并且可以自己进行任意的扩展。

  前一小节已经介绍了怎样使用数据源ADO来控制Excel的数据,在控制数据方面上,其优势比EOM明显方便很多。接下来就来尝试一下使用数据源与Dictionary对象结合一起的操作。这里仍然延续使用上一小节D盘中的“1.xls”,并在其中多加两列属性和对应的数据,如图3-41所示。

图3-41

  接着定义一个数据类,用于QTP直接来调用它,方便以后的使用,脚本如下所示:

Class oDataDic
         Private oDic         '定义Dictionary对象
         Public oWorkBookPath     '定义WorkBook路径变量
         Public oSheetName        '定义Sheet名称
         Public oRowNo         '定义包含数据的Excel行数
         '====================================================
         '载入Excel
         Public Default Function Load(oWorkBookPath, oSheetName, oRowNo)
                  With Me
                           .oWorkBookPath = oWorkBookPath
                           .oSheetName = oSheetName
                           .oRowNo = oRowNo
                  End With
 
                  BuildContext
                  Set Load = oDict
         End Function
 
'=======================================================
         Private Function BuildContext
                  Dim oConn, oRS, arrData, x
 
                  Set oConn = CreateObject("ADODB.Connection")
                  Set oRS = CreateObject("ADODB.RecordSet")
 
                  '打开数据源
                  oConn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" &_
                                           "Data Source=" & Me.oWorkBookPath & ";" & _
                                           "Extended Properties=""Excel 8.0;HDR=Yes;"";"
 
                  '查询语句
                  sQuery = "Select * From [" & Me.oSheetName & "$]"
 
                  '执行查询
                  oRS.Open sQuery, oConn, 3, 3, 1
 
                  '移动数据库游标
                  For x = 2 to oRowNo - 1 : oRS.MoveNext : Next

                  '创建Dictionary对象
                  oDict = CreateObject("Scripting.Dictionary")
 
                  '使用For循环重构Dictionary对象
                  For x = 0 to oRS.Fields.Count - 1
                           With oDict
                                    .Add "" & oRS(x).Name, "" & oRS.Fields(x)
                           End With
                  Next
         End Function
 
         Private Property Let oDict(ByVal Val)
                  Set oDic = Val
         End Property

         Private Property Get oDict()
                  Set oDict = oDic
         End Property

End Class

'创建oDataDic类
Set mDataContext = New oDataDic

42/4<1234>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号