TA的每日心情 | 开心 2018-4-22 12:50 |
---|
签到天数: 393 天 连续签到: 1 天 [LV.9]测试副司令
|
给你一个完整的例子,是从我的测试框架里抽取出来的,希望对你有帮助:
1,首先写一个读取外部excel的函数
'函数名称:T_ReadFromExcel
'函数描述:从外部Excel文件读取数据
'参数说明:xlsName(类型:字符串,指定读取的excel路径),workTable(类型:字符串,指定读取的工作表)
'isAll(类型:布尔,指定读取方式,True:读取全部数据,False:只读取某列的数据),
'iColCount(类型:数字,指定读取第几列)
'函数返回:返回所指定的数据
‘作者:联友 (QQ 56329953)
'更新日期:2008-12-11
Public Function T_ReadFromExcel(xlsName,workTable,isAll,iColCount)
on error resume next
dim fso
Set fso = CreateObject("Scripting.FileSystemObject")
If not fso.FileExists(xlsName) Then
Dim errMsg
errMsg="读取测试用例数据出错" & Chr(13)
errMsg=errMsg & " 1.文件名称或路径不正确" & Chr(13)
Call T_Report(errMsg)
call T_Message(errMsg, true)
end if
Dim xlApp, xlFile, xlSheet
Dim iRowCount, iLoop,iLoop1,numAdd
Set xlApp = CreateObject ("Excel.Application")
Set xlFile = xlApp.Workbooks.Open (xlsName)
Set xlSheet = xlFile.Sheets(workTable)
If Err.Number <> 0 Then
errMsg="读取测试用例数据出错" & Chr(13)
errMsg=errMsg & " 1.数据表名称不正确"
Call T_Report(errMsg)
call T_Message(errMsg, true)
End if
iRowCount = xlSheet.usedRange.Rows.Count
if isAll=true then
iColCount = xlSheet.usedRange.Columns.Count
For iLoop = 2 To iRowCount
For iLoop1 = 1 To iColCount
numAdd = numAdd &"^"& xlSheet.Cells(iLoop,iLoop1)
Next
Next
else
if not isNumeric(iColCount) then iColCount=1
For iLoop = 2 To iRowCount
numAdd = numAdd &"^"& xlSheet.Cells(iLoop,iColCount)
next
end if
xlFile.Close
xlApp.Quit
Set xlSheet = Nothing
Set xlFile = Nothing
Set xlApp = Nothing
T_ReadFromExcel=numAdd
End Function
2,在excel中设计测试用例数据,每一行数据以 | 作为结束标识,否则无法知道一行有多少列
3,在QTP脚本调用数据:
'初始化测试用例数据
Dim tmpUser,arrayUser
Dim testCase
testCase="e:\TestData\测试数据.xls" '这里是写excel的路径,包括文件名
if testCase="" then
bc.T_Report("加载测试用例失败,请检查路径是否正确")
ExitAction
end if
tmpUser=T_ReadFromExcel(testCase,"用户管理",true,0) '这里是写excel的哪个表格(就是哪个sheet),excel里可以有多个表格,对应不同模块的测试数据
arrayUser=split(tmpUser,"|")
‘将数据填写到程序中,楼主可以设计多行数据,这样它会自动取每一行的数据
for i=0 to ubound(arrayUser)-1
dim arrayUser2
'这里是取第一列的第1数据,第二次循环时,就是第一列的第二个数据
Browser("title:=" & IETitle).WebEdit("name:=userAccount").Set split(arrayUser2(1),"/")(0)
'这里是取第一列的第2数据,第二次循环时,就是第一列的第2个数据
Browser("title:=" & IETitle).WebEdit("name:=userName").Set split(arrayUser2(2),"/")(0)
......
next |
|