利用外部数据驱动脚本的运行,这是经常用到的方法,这样可以很方便的组织测试数据。
下面以常见的几种方式进行说明。
1:数据文件以excel格式组织
用Excel组织测试数据是最常用的了。
此种驱动可以采用两种方式,将数据Import到DataTab中或是利用com来操纵Excel文件。
下面给出这两种方式的示例代码。(输入flight用户名和密码)
方式一、导入到DataTable中
'获得数据文件路径,并将数据文件导入到DataTable运行表中
DataStr= "d:\data.xls"
DataTable.AddSheet("TestData")
DataTable.ImportSheet DataStr,"Sheet1","TestData"
wait 1
'输入用户名和密码
For i=1 to DataTable.GetSheet("TestData").GetRowCount
systemutil.Run "D:\Program Files\QuickTest Professional\samples\flight\app\flight4b.exe"DataTable.SetCurrentRow i '把i设置为当前执行行UserName=DataTable.Value("UserName","TestData")PassWord=DataTable.Value("PassWord","TestData")Dialog("Login").WinEdit("Agent Name:").Set UserNameDialog("Login").WinEdit("Password:").SetSecure PassWordwait 1
Dialog("Login").WinButton("Cancel").Click
Next
方式二、利用com操纵Excel
DataStr= "d:\data.xls"
Set ExlObj=CreateObject("Excel.Application")
ExlObj.Visible = false' 设置为true的情况,文档会打开
ExlObj.DisplayAlerts = false
Set book=ExlObj.Workbooks.Open(DataStr)
Set sheet=book.Worksheets("Sheet1")
For i=2 to sheet.usedrange.rows.count
systemutil.Run "D:\Program Files\QuickTest Professional\samples\flight\app\flight4b.exe"
UserName=ExlObj.WorkSheets("Sheet1").Cells(i,1) '或者UserName=sheet.Cells(i,1)
PassWord=ExlObj.WorkSheets("Sheet1").Cells(i,2) '或者PassWord=sheet.Cells(i,2)
Dialog("Login").WinEdit("Agent Name:").Set UserName
Dialog("Login").WinEdit("Password:").SetSecure PassWord
wait 2
Dialog("Login").WinButton("Cancel").Click
Next
ExlObj.Quit
Set ExlObj = nothing
2:数据文件以txt格式组织
TFilePath= "d:\data.txt"
Set Fso3 = CreateObject("Scripting.FileSystemObject")
Set DataFile= Fso3.OpenTextFile(TFilePath,ForReading,False)
DataFile.SkipLine
Do while DataFile.AtEndOfLine<>true
systemutil.Run "D:\Program Files\QuickTest Professional\samples\flight\app\flight4b.exe"
ReadString = DataFile.ReadLine
DataStr=split(ReadString,",")
Dialog("Login").WinEdit("Agent Name:").Set DataStr(0)
Dialog("Login").WinEdit("Password:").SetSecure DataStr(0)
wait 2
Dialog("Login").WinButton("Cancel").Click
loop
DataFile.closeSet Fso3=Nothing
3:数据文件以数据库组织
下面代码是用Access做的,其他类型数据库类似
strDB="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\data.mdb;Persist Security Info=False"
strTableName="data"
Set Conn=createobject("adodb.connection")
Set Rst=createobject("adodb.recordset")
Conn.open strDB
Rst.open "select * from "+strTableName,Conn,2,2
Dim strTest(1)
Rst.MoveFirst
Do while not Rst.eof
systemutil.Run "D:\Program Files\QuickTest Professional\samples\flight\app\flight4b.exe"
strTest(0)=trim(cstr(Rst.fields(1)))
strTest(1)=trim(cstr(Rst.fields(2)))
Dialog("Login").WinEdit("Agent Name:").Set strTest(0)
Dialog("Login").WinEdit("Password:").SetSecure strTest(1)
Rst.MoveNext
wait 2
Dialog("Login").WinButton("Cancel").Click
Loop
Rst.closeSet Conn=nothing
4:数据文件以xml格式组织
Dim xmlDoc 'As DOMDocument需要引用xml对象
set xmlDoc=CreateObject("microsoft.xmldom")
xmlDoc.load("d:\testdata.xml")
Set Root=xmlDoc.documentElement
For i = 0 To Root.childNodes.Length-1
systemutil.Run "D:\Program Files\QuickTest Professional\samples\flight\app\flight4b.exe"
Set TestCases = Root.childNodes.Item(i)
For j = 0 To TestCases.childNodes.Length-1
Set TestCase = TestCases.childNodes.Item(j)
If cstr(TestCase.nodeName)="UserName" Then
Dialog("Login").WinEdit("Agent Name:").Set TestCase.text
end if
If cstr(TestCase.nodeName)="PassWord" Then
Dialog("Login").WinEdit("Password:").SetSecure TestCase.text
End If
Next
wait 2
Dialog("Login").WinButton("Cancel").Click
Next
Set root=nothing
Set xml=nothing