QTP数据驱动之读取Excel数据

这个代码的原理是把Excel的数据当做数据库里的数据一样处理,可以对Excel用select来检索需要的数据,然后把数据以键值对的形式保存到oDict里,方便在用例层来调用

QTP数据驱动之读取Excel数据
  1 Class oDataDic
  2 
  3         Private oDic
  4         Public oWorkBookPath
  5         Public oSheetName
  6         Public oRowNo
  7 
  8         Private Sub Class_Initialize
  9                 oWorkBookPath = getTestDataFromQC_QTP("业务系统测试数据")
 10             
 11                 oWorkBookPath = Environment.Value("ProductDir") & "\业务系统测试数据.xls" strTestDataPath
 12         End Sub
 13         
 14         Public Default Function Load(oSheetName, oRowNo)
 15                 With Me
 16                         .oWorkBookPath = oWorkBookPath
 17                         .oSheetName = oSheetName
 18                         .oRowNo = oRowNo
 19                 End With
 20                 
 21                 BuildContext
 22                 Set Load = oDic
 23         End Function
 24 
 25         Public Function GetExcelRecordCount(oSheetName, CaseNO)
 26                 Dim oConn, oRS, arrData, x
 27                 Set oConn = CreateObject("ADODB.Connection")
 28                 Set oRS = CreateObject("ADODB.RecordSet")
 29                     
 30                 oConn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
 31                             "Data Source=" & oWorkBookPath & ";" & _
 32                             "Extended Properties=""Excel 8.0;HDR=Yes;"";"
 33                             
 34                 If IsNumeric(CaseNO) Then
 35                     sQuery = "select * from [" & oSheetName & "$]" & " where 测试用例编号 = " & CaseNO
 36                 else
 37                     sQuery = "select * from [" & oSheetName & "$]" & " where 测试用例名称 = " & "" & CaseNO & ""
 38                 End If
 39                         
 40                 oRS.Open sQuery, oConn, 3, 3, 1
 41 
 42                 rows = oRS.Index
 43                 GetExcelRecordCount = oRS.RecordCount
 44                 num = oRS.GetRows
 45                 Dim x
 46                 For x= 2 To oRS.RecordCount + 1
 47                     If CStr(oRS.Fields(0)) = CaseNO Then
 48                         msgbox x
 49                         CStr(oRS.Fields(1))
 50                         Exit For
 51                     Else
 52                         oRS.MoveNext
 53                     End If
 54                 Next
 55                 Set oDic = CreateObject("Scripting.Dictionary")
 56                 
 57                 For x = 0 To oRS.Fields.Count - 1
 58                         With oDic
 59                                 .Add "" & oRS(x).Name, "" & oRS.Fields(x)
 60                         End With
 61                 Next
 62  63                 Set GetExcelRecordCount = oDic
 64                 
 65         End Function
 66 
 67         Public Function LoadExcelRecord(oSheetName, CaseNO, oRowNo)
 68                 On Error Resume Next
 69                 Dim oConn, oRS, arrData, x
 70                 Set oConn = CreateObject("ADODB.Connection")
 71                 Set oRS = CreateObject("ADODB.RecordSet")
 72                     
 73                 oConn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
 74                             "Data Source=" & oWorkBookPath & ";" & _
 75                             "Extended Properties=""Excel 8.0;HDR=Yes;"";"
 76                             
 77                 If IsNumeric(CaseNO) Then
 78                     sQuery = "select * from [" & oSheetName & "$]" & " where 测试用例编号 = " & CaseNO
 79                 else
 80                     sQuery = "select * from [" & oSheetName & "$]" & " where 测试用例名称 = " & "" & CaseNO & ""
 81                 End If
 82                 oRS.Open sQuery, oConn, 3, 3, 1
 83 
 84 
 85 
 86                 For x= 2 To oRS.RecordCount + 1
 87                     If CStr(oRS.Fields(0)) = CaseNO Then
 88                         msgbox x
 89                         CStr(oRS.Fields(1))
 90                         Exit For
 91                     Else
 92                         oRS.MoveNext
 93                     End If
 94                 Next
 95 
 96                 For x= 2 To oRowNo - 1 : oRS.MoveNext : Next
 97 
 98                 Set oDic = CreateObject("Scripting.Dictionary")
 99                 
100                 For x = 0 To oRS.Fields.Count - 1
101                         With oDic
102                                 .Add "" & oRS(x).Name, "" & oRS.Fields(x)
103                                 .Add cstr(oRS(x).Name), cstr(oRS.Fields(x))
104                         End With
105                 Next
106 
107                 Set LoadExcelRecord = oDic
108                 
109         End Function
110         
111         Private Function BuildContext
112                 Dim oConn, oRS, arrData, x
113                 
114                 Set oConn = CreateObject("ADODB.Connection")
115                 Set oRS = CreateObject("ADODB.RecordSet")
116                 
117                 oConn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
118                             "Data Source=" & Me.oWorkBookPath & ";" & _
119                             "Extended Properties=""Excel 8.0;HDR=Yes;"";"
120 
121                 sQuery = "select * from [" & Me.oSheetName & "$]"        
122                 oRS.Open sQuery, oConn, 3, 3, 1
123                 
124                 For x= 2 To oRowNo - 1 : oRS.MoveNext : Next
125                 
126                 Set oDic = CreateObject("Scripting.Dictionary")
127                 
128                 For x = 0 To oRS.Fields.Count - 1
129                         With oDic
130                                 .Add "" & oRS(x).Name, "" & oRS.Fields(x)
131                                 .Add cstr(oRS(x).Name), cstr(oRS.Fields(x))
132                         End With
133                 Next
134 
135                 Set oDic = Nothing
136                 Set oRS = Nothing
137                 Set oConn =Nothing
138         End Function
139         
140         Private Property Let oDic(ByVal val)
141                 Set oDic = val
142         End Property
143         
144         Private Property Get oDic()
145                 Set oDic = oDic
146         End Property
147 End Class
148 
149 
150 Set mDataContext = New oDataDic
View Code

QTP数据驱动之读取Excel数据

上一篇:A query was run and no Result Maps were found for the Mapped Statement 'com.hhwy.epes.review.othermajormeetinguser.domain


下一篇:OpenJudge 2737 大整数除法