UFT demo(二)

利用自动化框架对demo进行修改,框架分为6个部分,分别为commonlib,testcase,testlog,testobject,testpic,testscript

commonlib存放自定义函数

testcase存放测试用例

testlog存在测试日志

testobject存放对象库

testpic存放错误截图

testscript存放测试脚本

目的在于把测试脚本分拆,用函数封装主要功能,框架总体积缩小,方便自动化测试,脚本如下:

外部运行脚本启动UFT,自动执行用例:

1 Dim qtapp
2 Set qtapp=CreateObject("quicktest.application")
3 qtapp.Launch
4 qtapp.Visible=True
5 qtapp.Open "C:AutoTest	estscriptFlight-Demo"
6 qtapp.Test.Run
7 qtapp.Quit
8 Set qtapp = nothing

控制脚本,脚本主体框架:

 1 Option explicit
 2 '1、目录生成
 3 Dim testpath,testpaths
 4 testpath = Environment.Value("TestDir")
 5 testpaths = split(testpath,"testscript")
 6 ExecuteFile testpaths(0)&"commonlibcreatefolder.vbs"
 7 createfolder testpaths(0)&"testlog"
 8 createfolder testpaths(0)&"testpic"
 9 
10 '2、测试用例加载
11 '判断测试用例是否存在
12 ExecuteFile testpaths(0)&"commonlibloadcase.vbs"
13 loadcase testpaths(0)&"testcase	estCases.xls","Login"
14 
15 '3、生成日志
16 ExecuteFile testpaths(0)&"commonliblogPrint.vbs"
17 ExecuteFile testpaths(0)&"commonlibErrHandle.vbs"
18 
19 '4、应用程序启动
20 logPrint("开始进入功能:flight登陆功能")
21 ExecuteFile testpaths(0)&"commonlibOpenApp.vbs"
22 OpenApp "flight4b.exe","C:Program Files (x86)HPUnified Functional Testingsamplesflightappflight4b",""
23 
24 '5、测试对象加载(如果有对象库,则通过loadtsr方法加载)
25 ExecuteFile testpaths(0)&"commonlibloadtsr.vbs"
26 ExecuteFile testpaths(0)&"testscriptlogin.vbs"

测试脚本主体:

 1 Dim WarnStaticLogin,WarnStaticPassword,CheckValue,ExpectValue,ActualValue
 2 ExecuteFile testpaths(0)&"commonlibobject.vbs"
 3 ExecuteFile testpaths(0)&"commonlibfunction.vbs"
 4 
 5 
 6 logPrint("执行登陆条件:错误的用户名,正确的密码")
 7 With Dialog(MyDialog)
 8     .WinEdit(MyName).Set ReadExcel(testpaths(0)&"testcase	estCases.xls","Login",4,5)
 9     .WinEdit(MyPwd).Set ReadExcel(testpaths(0)&"testcase	estCases.xls","Login",4,6)
10     .WinButton(MyButton).Click
11 End With
12 WarnStaticLogin = Dialog(MyDialog).Dialog(Flight_Reservations_Dialog).Static(WarnStatic_login).GetROProperty("regexpwndtitle")
13 If WarnStaticLogin = "Agent name must be at least 4 characters long." Then
14     CheckValue = "Agent name must be at least 4 characters long."
15     Call DoExcel (testpaths(0)&"testcase	estCases.xls","Login",4,8)
16     ExpectValue = ReadExcel(testpaths(0)&"testcase	estCases.xls","Login",4,7)
17     ActualValue = ReadExcel(testpaths(0)&"testcase	estCases.xls","Login",4,8)
18     If ExpectValue = ActualValue Then
19         CheckValue = "Pass"
20             Call DoExcel (testpaths(0)&"testcase	estCases.xls","Login",4,9)
21         else 
22             CheckValue = "Fail"
23             Call DoExcel (testpaths(0)&"testcase	estCases.xls","Login",4,9)
24     End If
25     Dialog(MyDialog).Dialog(Flight_Reservations_Dialog).WinButton(ConfirmButton).Click
26     
27     ExitTest
28 End If
29 
30 logPrint("执行登陆条件:正确的用户名,错误的密码")
31 wait 5
32 With Dialog(MyDialog)
33     .WinEdit(MyName).Set ReadExcel(testpaths(0)&"testcase	estCases.xls","Login",5,5)
34     .WinEdit(MyPwd).Set ReadExcel(testpaths(0)&"testcase	estCases.xls","Login",5,6)
35     .WinButton(MyButton).Click
36 End With
37 WarnStaticPassword = Dialog(MyDialog).Dialog(Flight_Reservations_Dialog).Static(WarnStatic_password).GetROProperty("regexpwndtitle")
38 If WarnStaticPassword = "Password must be at least 4 characters long" Then
39     CheckValue = "Password must be at least 4 characters long"
40     Call DoExcel (testpaths(0)&"testcase	estCases.xls","Login",5,8)
41     ExpectValue = ReadExcel(testpaths(0)&"testcase	estCases.xls","Login",5,7)
42     ActualValue = ReadExcel(testpaths(0)&"testcase	estCases.xls","Login",5,8)
43     If ExpectValue = ActualValue Then
44         CheckValue = "Pass"
45             Call DoExcel (testpaths(0)&"testcase	estCases.xls","Login",5,9)
46         else
47             CheckValue = "Fail"
48             Call DoExcel (testpaths(0)&"testcase	estCases.xls","Login",5,9)
49         End If
50     Dialog(MyDialog).Dialog(Flight_Reservations_Dialog).WinButton(ConfirmButton).Click    
51 else
52     ExitTest
53 End If
54 
55 
56 logPrint("执行登陆条件:正确的用户名、密码")
57 wait 5
58 With Dialog(MyDialog)
59     .WinEdit(MyName).Set ReadExcel(testpaths(0)&"testcase	estCases.xls","Login",3,5)
60     .WinEdit(MyPwd).Set ReadExcel(testpaths(0)&"testcase	estCases.xls","Login",3,6)
61     .WinButton(HelpButton).Click
62     .Dialog(Flight_Reservations_Dialog).WinButton(ConfirmButton).Click
63     .WinButton(MyButton).Click
64 End With
65 If  Window(MyWindow).Exist(5) Then
66     CheckValue = "成功登录"
67     Call DoExcel (testpaths(0)&"testcase	estCases.xls","Login",3,8)
68     ExpectValue = ReadExcel(testpaths(0)&"testcase	estCases.xls","Login",3,7)
69     ActualValue = ReadExcel(testpaths(0)&"testcase	estCases.xls","Login",3,8)
70     If ExpectValue = ActualValue Then
71         CheckValue = "Pass"
72             Call DoExcel (testpaths(0)&"testcase	estCases.xls","Login",3,9)
73         else
74             CheckValue = "Fail"
75             Call DoExcel (testpaths(0)&"testcase	estCases.xls","Login",3,9)
76         End if
77     Window(MyWindow).WinMenu(MyMenu).Select "File;Exit"
78 else
79     ExitTest
80 End If
81 logPrint("登陆用例执行完毕")

createfolder.vbs创建文件夹:

 1 Option Explicit
 2 Sub createfolder(folderpath)
 3 Dim fso,f
 4 Dim blfolderexist
 5 Set fso = CreateObject("scripting.filesystemobject")
 6 blfolderexist =  fso.FolderExists(folderpath)
 7 If blfolderexist Then
 8     MsgBox folderpath&"已存在"
 9     fso.DeleteFolder(folderpath)
10 End If
11 Set f = fso.CreateFolder(folderpath)
12 Set fso = Nothing
13 End Sub

ErrHandle.vbs日志:

1 Public Function ErrHandle()
2     If Err.Number <> 0 Then
3             logPrint "Error Num: " & Err.Number & "; Error Src: " & Err.Source & "; Error Desc: " & Err.Description
4             Err.Clear
5     End If
6 End Function

loadcase.vbs确定测试用例的存在:

 1 Sub loadcase(casepath,casename)
 2     Dim fso,blcaseexist
 3     Set fso = CreateObject("scripting.filesystemobject")
 4     blcaseexist = fso.FileExists(testpaths(0)&"testcase	estCases.xls")
 5     If blcaseexist Then
 6        DataTable.ImportSheet casepath,"Login","login"
 7     Else
 8        Reporter.ReportEvent micFail,"Login Test","测试用例不存在"
 9        ExitTest
10     End If
11     Set fso = nothing
12 End Sub

loadtsr.vbs调用对象库:

1 Sub loadtsr(tsrname)
2     RepositoriesCollection.RemoveAll
3     RepositoriesCollection.Add tsrname
4 End Sub

logPrint.vbs日志:

1 Public Function logPrint(ByVal logMessage)
2     Dim fso,logFile
3     Set fso=CreateObject("scripting.filesystemobject")
4     Set logFile = fso.OpenTextFile(testpaths(0)&"testlog
untime.log",8,true)
5     logFile.WriteLine(date() & " " & hour(now) & ":" & minute(now) & ":" & second(now) & ": " & logMessage)
6     logFile.Close
7 End Function

OpenApp.vbs打开应用程序,之所以不用systemutil.Run,是为了方便把已打开的程序关闭:

 1 Sub OpenApp(AppName,AppPath,AppParam)
 2     Dim gobj,wsh,proc
 3     Dim i
 4     On error resume next
 5     Set gobj=GetObject("winmgmts:\.
ootcimv2")
 6     Set wsh=CreateObject("wscript.shell")
 7     Set proc=gobj.execquery("select * from win32_process where name="&"'"&AppName&"'")
 8     For each i in proc
 9         systemutil.CloseProcessByName(AppName)
10         wscript.quit
11     Next
12     systemutil.Run AppPath,AppParam
13 End Sub

function.vbs对excel操作: 

 1 Function ReadExcel(filepath,sheetname,x,y)
 2    Dim ObjExcel,SrcExcel,ExcValue
 3    Set ObjExcel = CreateObject("Excel.Application")
 4    ObjExcel.Visible = false
 5    Set SrcExcel = ObjExcel.Workbooks.Open(filepath)
 6    SrcExcel.Worksheets(sheetname).Activate
 7    ExcValue = SrcExcel.Worksheets(sheetname).Cells(x,y).Value
 8    ReadExcel = ExcValue
 9    ObjExcel.DisplayAlerts = false
10    ObjExcel.Save
11    ObjExcel.Quit
12    Set ObjExcel = nothing
13    Set SrcExcel = nothing
14 End Function
15 
16 Function DoExcel(filepath,sheetname,x,y)
17    Dim ObjExcel,SrcExcel
18    Set ObjExcel = CreateObject("Excel.Application")
19    ObjExcel.Visible = false
20    Set SrcExcel = ObjExcel.Workbooks.Open(filepath)
21    SrcExcel.Worksheets(sheetname).Activate
22    SrcExcel.Worksheets(sheetname).Cells(x,y).Value = CheckValue
23    ObjExcel.DisplayAlerts = false
24    ObjExcel.Save
25    ObjExcel.Quit
26    Set ObjExcel = nothing
27    Set SrcExcel = nothing
28 End Function

 object.vbs DP编程:

 1 Option Explicit
 2 Dim MyDialog,MyName,MyPwd,MyButton,MyWindow,MyMenu,Flight_Reservations_Dialog,WarnStatic_login,WarnStatic_password,ConfirmButton,CancelButton,HelpButton
 3 Set MyDialog = Description.Create()
 4         MyDialog("text").value="Login"
 5 Set MyName = Description.Create()
 6         MyName("nativeclass").value = "Edit"
 7         MyName("attached text").value = "Agent Name:"
 8 Set MyPwd = Description.Create()
 9         MyPwd("nativeclass").value = "Edit"
10         MyPwd("attached text").value= "Password:"
11 Set MyButton = Description.Create()
12         MyButton("text").value = "OK"
13         MyButton("nativeclass").value="Button"
14 Set MyWindow = Description.Create()
15         MyWindow("regexpwndtitle").value = "Flight Reservation"
16 Set MyMenu = Description.Create()
17         MyMenu("menuobjtype").value = "2"
18 Set Flight_Reservations_Dialog = Description.Create()
19         Flight_Reservations_Dialog("text").value = "Flight Reservations"
20         Flight_Reservations_Dialog("regexpwndtitle").value = "Flight Reservations"
21 Set WarnStatic_login = Description.Create()
22         WarnStatic_login("nativeclass").value = "Static"
23         WarnStatic_login("text").value = "Agent name must be at least 4 characters long."
24 Set WarnStatic_password = Description.Create()
25         WarnStatic_password("nativeclass").value = "Static"
26         WarnStatic_password("text").value = "Password must be at least 4 characters long"
27 Set CancelButton = Description.Create()
28         CancelButton("regexpwndtitle").value = "Cancel"
29 Set ConfirmButton = Description.Create()
30         ConfirmButton("regexpwndtitle").value = "确定"
31 Set HelpButton = Description.Create()
32         HelpButton("regexpwndtitle").value = "Help"
原文地址:https://www.cnblogs.com/drnmmond/p/7339532.html