QTP测试数据管理-Excel+Dictionary

本文介绍了一种使用ADO从Excel读取测试数据并存储到Dictionary对象的方法,通过定义clsTestData类实现数据加载和构建。示例展示了如何在QTP中应用此方法进行自动化测试。

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

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值