QTP测试数据管理-Excel+Dictionary

relevantcodes.com的《QTP: Creating a Highly Efficient Test-Data Dictionary》这篇文章介绍了如何使用ADO读取Excel测试数据,并存储到Dictionary对象中:

http://relevantcodes.com/qtp-creating-a-highly-efficient-test-data-dictionary/

 

定义一个类clsTestData,负责从Excel读取数据到Dictionary对象中:

'Class clsTestData: Stored in Function Library

Class clsTestData

      Private mDict       'Local Instance of Scripting.Dictionary

       Public sWorkBook    'Excel WorkBook

       Public vSheet       'Excel WorkSheet

       Public iRow         'Excel Row where test data is contained

 

       'Loads the Dictionary Object

       Public Default Function Load(sWorkBook, vSheet, iRow)

             With Me

                     .sWorkBook = sWorkBook

                     .vSheet = vSheet

                     .iRow = iRow

              End With

             

              BuildContext : Set Load = oDict

       End Function

 

       'Builds the Dictionary Object from Excel

       Private Function BuildContext

              Dim oConn, oRS, arrData, x

              CONST adOpenStatic = 3

              CONST adLockOptimistic = 3

              CONST adCmdText = "&H0001"

 

              Set oConn = CreateObject("ADODB.Connection")

              Set oRS = CreateObject("ADODB.RecordSet")

 

              'Open Connection

              oConn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" &_

                                   "Data Source=" & Me.sWorkBook & ";" & _

                                   "Extended Properties=""Excel 8.0;HDR=Yes;"";"

 

              'Query

              sQuery = "Select * From [" & Me.vSheet & "$]"

 

              'Run query against WorkBook

              oRS.Open sQuery, oConn, 3, 3, 1

 

              'Move RecordSet to the target Row

              For x = 2 to iRow - 1 : oRS.MoveNext : Next

 

              oDict = CreateObject("Scripting.Dictionary")

 

              'Use a For..Loop to Build Scripting.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 mDict = Val

       End Property

       Private Property Get oDict()

              Set oDict = mDict

       End Property

End Class

Set mDataContext = New clsTestData

 

 

 

使用的例子如下所示:

 

Dim sWorkbook, vSheet, iRow

 

sWorkBook = Environment.Value("TestDir") &"../../Test.xls"        'WorkBook

vSheet = "Sheet1"                'WorkSheet

iRow = 2                         'Row Number

 

'This loads the Test Data to mDict

tStart = Timer

Set mDict = mDataContext.Load(sWorkBook, vSheet, iRow) 'Took 0.156 seconds to build

Print "Time taken to load Dictionary: " & Timer - tStart

 

'Launch IE Browser

SystemUtil.Run "iexplore.exe", "http://newtours.demoaut.com", "", "", 3

 

'Action Code:

With Browser("title:=Welcome: Mercury Tours", "index:=").Page("micclass:=Page")

    .WebEdit("name:=userName").Set mDict("Username")

    .WebEdit("name:=password").Set mDict("Password")

    .Image("name:=login").Click

End With

 

With Browser("title:=Find a Flight.*", "index:=").Page("micclass:=Page")

    If .Exist(15) Then

        .WebRadioGroup("name:=tripType").Select mDict("Trip Type")

        .WebList("name:=passCount").Select mDict("Passenger Count")

        .WebList("name:=fromPort").Select mDict("From Port")

        .WebList("name:=fromMonth").Select mDict("From Month")

        .WebList("name:=fromDay").Select mDict("From Day")

    End If

End With

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值