Class Login
Private m_htChildObjects 'As Scripting.Dictionary
Public Property Get ChildObjects()
Set ChildObjects = m_htChildObjects
End Property
Public Property Let ChildObjects(ByRef dic)
Set m_htChildObjects = dic
End Property
' 初始化界面對象並驗證對象是否存在
Public Function init()
ChildObjects = CreateObject("Scripting.Dictionary")
With ChildObjects
.Add "LoginDialog", Dialog("text:=Login")
.Add "AgentName", ChildObjects.Item("LoginDialog").WinEdit("attached text:=Agent Name:")
.Add "Password", ChildObjects.Item("LoginDialog").WinEdit("attached text:=Password:")
.Add "Submit", ChildObjects.Item("LoginDialog").WinButton("text:=OK")
End With
'IsContextLoaded is a function that iterates through the Dictionary and checks if the GUI objects "exist"
Init = IsContextLoaded(ChildObjects) ' 檢查界面層對象是否存在
End Function
' 與界面對象綁定的各類業務操作
' 測試數據從GlobalDictionary中獲取(放在Data層),這裡把測試數據做成函式參數可能會更好?!
Public Function SetUsername()
ChildObjects.Item("AgentName").Set GlobalDictionary.Item("AgentName")
End Function
Public Function SetPassword()
ChildObjects.Item("Password").Set GlobalDictionary.Item("Password")
End Function
Public Function Submit()
ChildObjects.Item("Submit").Click
End Function
End Class
Public Function CreateLogin()
Dim objLogin
Set objLogin = New Login
Set CreateLogin = objLogin
End Function
在業務層的類中封裝業務操作流程的代碼,例如下面的登錄流程:
' 登錄業務類,封裝了登錄過程的業務操作流程
Class do_login
Public Default Function Run()
Dim intStatus
Set objLogin = CreateLogin() ' 調用GUI層的Login類
If objLogin.Init() Then ' 如果所需的界面對象都存在,則執行業務操作流程
objLogin.SetUsername()
objLogin.SetPassword()
objLogin.Submit()
intStatus = micPass 'If login succeeds
Else
intStatus = micFail
End If
Run = intStatus
End Function
End Class
Public Function Create_do_login()
Dim bzLogin
Set bzLogin = New do_login
Set Create_do_login = bzLogin
End Function
這種寫法的好處,除了可以細粒度地抽象、分解業務的測試代碼,提高可重用性外,還可以在業務層的代碼執行前,先讓界面層檢查驗證所需的測試對象是否都存在( 例如上面代碼中的objLogin.Init() ),避免了QTP在運行過程中碰到對象不存在的時候卡住的現象。
在界面層的Init方法中,通過描述性編程把測試對象都存入Dictionary中,然後用IsContextLoaded方法遍歷對象,檢查是否在運行時都存在:
' 檢查界面層對象是否存在並寫入測試報告
Public Function IsContextLoaded(ByRef htContext)
Dim ix, items, keys, strDetails, strAdditionalRemarks
IsContextLoaded=true
items = htContext.Items
keys = htContext.Keys
For ix = 0 To htContext.Count-1
IsContextLoaded = IsContextLoaded And items(ix).Exist(0)
strDetails = strDetails & vbNewLine & "Object #" & ix+1 & ": '" & keys(ix) & "' was"
If IsContextLoaded Then
intStatus = micPass
strDetails = strDetails & ""
strAdditionalRemarks = ""
Else
intStatus = micWarning
strDetails = strDetails & " not"
strAdditionalRemarks = " Please check the object properties."
End If
strDetails = strDetails & " found." & strAdditionalRemarks
Next
Reporter.ReportEvent intStatus, "IsContextLoaded", strDetails
End Function
相關詞條
-
精通QTP
《精通QTP》是人民郵電出版社2012-1出版的圖書。
內容介紹 作者介紹 作品目錄 -
精通QTP—自動化測試技術領航
《精通QTP:自動化測試技術領航》是2012年1月1日人民郵電出版社出版的圖書,作者是余傑、趙旭斌。
內容簡介 關於本書作者 前言 本書的七大特色 本書針對的讀者群 -
精通QTP:自動化測試技術領航
《精通QTP:自動化測試技術領航》是2012年1月1日人民郵電出版社出版的圖書,作者是余傑、趙旭斌。
內容簡介 編輯推薦 媒體推薦 作者簡介 目錄 -
精通QTP——自動化測試技術領航
Table)的套用 etFactory對象 保留對象Settin
基本信息 內容簡介 目錄 -
億誠測試
技術、白盒測試技術與工具套用、自動化測試工具(QTP、Seleium)、安全測試、自動化框架設計、測試管理與質量管理等領域居於國內領先地位,公司...管理人員等自動化測試億誠測試開課對象:手工測試工程師QTP自動化...
-
北京億誠測試培訓中心
盒測試技術與工具套用、自動化測試工具(QTP、Seleium)、安全測試、自動化框架設計、測試管理與質量管理等領域居於國內領先地位,公司始終...質量管理人員自動化測試開課對象: 手工測試工程師QTP自動化測試...
企業介紹 業務介紹 性能測試 自動化測試 自動化框架設計 -
億測
技術與工具套用、自動化測試工具(QTP、Seleium)、 安全測試、自動化框架設計、測試管理與質量管理等領域居於國內領先地位,公司始終以全球最具...對象: 手工 測試工程師QTP 自動化測試工程師資深測試工程師沒有實際...
介紹 億測是億誠測試簡稱 業務介紹 性能測試 自動化測試 -
鄭州大學軟體學院
、Java高級開發及框架技術、移動終端(Android/iOS)套用開發技術...、算法設計與分析、Oracle資料庫、XML程式設計、SSH框架、Java...技術、資料庫開發和遊戲開發技術,熟練掌握軟體測試方法與技術,精通QTP...
學校介紹 本科一批專業 研究生專業 學院領導 機構設定 -
檔案類型
簡介在WiNDOws環境中,檔案的操作或結構特性的指定。與檔案類型關聯的是它的圖示以及對應該檔案類型的程式。在Macintosh...
簡介 檔案類型大全
