UFT描述性编程及综合练习

1、录制登录操作改描述性编程。

  • 登录的用户名、密码在global表中给出。有2组:自己的学号/mercury,自己的学号/123456。将登录的本地对象库清空。

要求:

分别采用直接描述性编程和Description描述性编程实现2组数据登录测试,用reporter.reportevent报告实验结果

2、自动化录制登录操作。

  • 把飞机订票系统的Login脚本封装到一个函数中,函数返回成功或者失败记录,并且这些记录要用reporter对象的reportevent方法报告到测试结果窗口,函数存放到BusinessFunctions函数库文件。
  • 登录的用户名、密码在以你学号命名的excel文件中,有2组数据,每组3列:

UserName

PassWord

Result

自己的学号

mercury

自己的学号

123456

  • 测试脚本中要根据调用Login函数的返回值将结果写回到global表中,如果返回值为真,将Result列值设置为登录成功,为假设置为登录失败。
  • 在脚本中用DataTable的import和将测试数据导入到global表中,用export方法将测试结果数据导出到原excel文件中。

附加内容:

  • 建立自动化测试框架。包括:test_script、test_libraries、 test_data、 test_object_repositories、test_result_log。
  • 使用fso对象对日志文件操作。将账号和登录时间及登录结果写入日志文件。

1、录制登录操作改描述性编程。

正常录制登录操作之后进行对其改造,根据对象的属性和方法来操作对象。

看下图,就知道该对象的属性和值,其他各种对象同样操作,我们就可以对其进行描述来代替对象库。

UFT描述性编程及综合练习_第1张图片

SystemUtil.Run "E:\software\HP\Unified Functional Testing\samples\flight\app\flight4a.exe"
Dialog("Login").WinEdit("Agent Name:").Set "apple"
Dialog("Login").WinEdit("Password:").SetSecure "64609cb188999d31fce95fdce9d2837f01ab67c5"
Dialog("Login").WinButton("OK").Click
Window("Flight Reservation").Close

直接描述性编程

SystemUtil.Run "E:\software\HP\Unified Functional Testing\samples\flight\app\flight4a.exe"
Dialog("text:=Login").WinEdit("Attached text:=Agent Name:").Set DataTable("UserName", dtGlobalSheet)
Dialog("text:=Login").WinEdit("Attached text:=Password:").SetSecure DataTable("PassWord", dtGlobalSheet)
Dialog("text:=Login").WinButton("text:=OK").Click
If Dialog("text:=Login").Dialog("regexpwndtitle:=Flight Reservations").Exist(3) Then
	Dialog("text:=Login").Dialog("regexpwndtitle:=Flight Reservations").WinButton("text:=确定").Click
End If
If Window("regexpwndtitle:=Flight Reservation").Exist(5) Then
	Reporter.ReportEvent micPass,"登录","登录成功"
	Window("regexpwndtitle:=Flight Reservation").Close
	Else
	Reporter.ReportEvent micFail,"登录","登陆失败"
End If

要知道怎么进行改造的,就是把每个对象的属性是什么,值是什么写上就OK了,这样当缺少某个对象时,就不用录制加入,可以直接描述对象的属性和值进行加入。

对其改造完成后,就需不在需要对象库了,

UFT描述性编程及综合练习_第2张图片

 要在全局表中写好数据在运行。

UFT描述性编程及综合练习_第3张图片


Description描述性编程

这种方法的特点是,每个新对象都要用Descriptioni()来创建一下,然后对其进行设置属性来表示当前对象是什么,对其进行操作。

SystemUtil.Run "E:\software\HP\Unified Functional Testing\samples\flight\app\flight4a.exe"
set myDialog = Description.Create()
myDialog("text").value = "Login"
set myWinEditUserName = Description.Create()
myWinEditUserName("Attached text").value = "Agent Name:"
set myWinEditPwd = Description.Create()
myWinEditPwd("Attached text").value = "PassWord:"
set myWinEditButton = Description.Create()
myWinEditButton("text").value = "OK"
With Dialog(myDialog)
	.WinEdit(myWinEditUserName).Set DataTable("UserName", dtGlobalSheet)
	.WinEdit(myWinEditPwd).SetSecure DataTable("PassWord", dtGlobalSheet)
	.WinEdit(myWinEditButton).Click
End With
If Dialog("text:=Login").Dialog("regexpwndtitle:=Flight Reservations").Exist(3) Then
	Dialog("text:=Login").Dialog("regexpwndtitle:=Flight Reservations").WinButton("text:=确定").Click
End If
If Window("regexpwndtitle:=Flight Reservation").Exist(5) Then
	Reporter.ReportEvent micPass,"登录","登录成功"
	Window("regexpwndtitle:=Flight Reservation").Close
	Else
	Reporter.ReportEvent micFail,"登录","登陆失败"
End If

自动化录制登录操作

根据要求我们要把登录操作封装到一个函数中,通过调用登录函数,返回登录是成功还是失败的结果。

那么我们要知道怎么使用函数,要在函数库中进行函数的编写,最后使用的话,要关联对应的函数库,这样就可以使用我们编写的函数。

定义函数有Function  函数名(参数)这一种方法是有返回值的,还有Sub  函数名(参数)这个是没有返回值的。根据具体情况选择。

第一步、新建函数库,关联函数库

UFT描述性编程及综合练习_第4张图片

 然后在函数库中编写登录代码等等函数,调用是要关联后才能调用的。

UFT描述性编程及综合练习_第5张图片

Function Login(UserName,PassWord)
	SystemUtil.Run "E:\software\HP\Unified Functional Testing\samples\flight\app\flight4a.exe"
	Dialog("text:=Login").WinEdit("Attached text:=Agent Name:").Set UserName
	Dialog("text:=Login").WinEdit("Attached text:=Password:").SetSecure PassWord
	Dialog("text:=Login").WinButton("text:=OK").Click
	If Dialog("text:=Login").Dialog("regexpwndtitle:=Flight Reservations").Exist(3) Then
		Dialog("text:=Login").Dialog("regexpwndtitle:=Flight Reservations").WinButton("text:=确定").Click
	End If
	If Window("regexpwndtitle:=Flight Reservation").Exist(5) Then
		Reporter.ReportEvent micPass,"登录","登录成功"
		Login = True
		Window("regexpwndtitle:=Flight Reservation").Close
	Else
		Reporter.ReportEvent micFail,"登录","登陆失败"
		Login = False
	End If

End Function

第二步、编写输出结果赋值函数

因为我们在登录之后要把结果写回Excel表中,那么我们还需要在写一个函数用来把结果输出到Excel表格中,当然代码量不用函数调用直接写也是OK的。

Sub OutPut(result)
	If result Then
		datatable.Value("Result",global) = "True"
	Else
		datatable.Value("Result",global) = "False"
	End If
End Sub

第三步、编写日志函数保存测试结果

最后要用FSO对象来对日志进行操作,将账号和登录时间及结果写入日志中,那么再写一个函数。

我们需要知道怎么写入日志,方法是什么

创建文件对象:Set fso=CreateObject("Scripting.FileSystemObject")

文件对象是否存在:fso.FileExists(文件路径)

打开文件:Set myfile=fso.OpenTextFile(……,8,True),当文件不存在时会自动创建,8表示追加写入模式。

写完日志之后,不要忘记关闭文件及把对象设置为Nothing

Sub testResultLog (Judge,Uname)
    Dim FSO,LogFile
    Set FSO = CreateObject("Scripting.FileSystemObject")
    Set myLogFile = FSO.OpenTextFile("E:\software\HP\testfile.txt", 8, True) '创建文件
    myLogFile.WriteLine "Account: " & Uname    ' 写入内容
    myLogFile.WriteLine "Login time: " & Now()
    If Judge Then  ' 判断写入的是成功还是失败
    	myLogFile.WriteLine "Login result: Success"
    Else
    	myLogFile.WriteLine "Login result: Failed"
    End If
    myLogFile.Close  ' 关闭文件
    Set myLogFile = Nothing    '最后要设置为Nothing
    Set FSO = Nothing
End Sub

第四步、编写主调用内容

最后在Action中写获取Excel中的数据,在进行调用函数库中的登录函数进行登录,要先判断一下数据中是否有数据,没有就从外部Excel中导入,之后获取Excel中设置好的账号和密码,调用Login函数进行登录,然后调用输出函数将结果写到数据表l中,在调用输出日志函数,传入账号和登录结果,即可写入日志。最后导出数据到Excel表格中。

Dim rowcount
rowcount = datatable.GetRowCount
If rowcount=0 Then
	datatable.Import "E:\software\HP\软件测试.xlsx"
End If
Dim Uname,Pwd
Uname = datatable.Value("UserName",global)
Pwd = datatable.Value("PassWord",global)
Dim success
success = Login(Uname,Pwd)
Output(success)
testResultLog success,Uname
datatable.Export "E:\software\HP\软件测试.xlsx"

日志结果如下图所示

UFT描述性编程及综合练习_第6张图片

 导出结果如图

UFT描述性编程及综合练习_第7张图片


你可能感兴趣的:(UFT软件的相关操作,UFT软件测试,描述性编程)