QTP自動化測試權威指南 連載(六)
利用腳本停止腳本并重新運行腳本
這里列舉一些常見的需要重新停止并重新運行腳本的情況:
當動態加載環境變量后必須停止并重新運行才能被正確加載到測試腳本中
當在測試TE過程中需要運行多個Session,QTP不允許在單次腳本運行中運行多個TE Session,若需在腳本中運行多個Session,那么就需要在每個Session最后停止并從下一個session點繼續執行。
此技術通常用于重啟QTP并且只對第一次運行有效,當在不需要執行腳本并需要重新運行時停止QTP,通過運行一個異步腳本來控制當QTP一旦進入到非運行模式下就運行它直到腳本結束。
'停止并重運行QTP Sub AsyncReRunQTP() Public Function CreateQTPRunScript() |
StopAndReRunQTP函數會檢查flag是否存在于Setting中,如果不存在則停止QTP,此處Setting設置持續周期起到了關鍵作用,如果沒有它則無法完成以上所實現的功能。
AsyncReRunQTP函數創建并執行了一個VBScript腳本,而此腳本會在運行時重新運行QTP,重運行腳本如下:
'創建QTP應用對象 Set qtpApp = CreateObject("QuickTest.Application") '等待測試停止 While qtpApp.Test.IsRunning Wend '運行測試 qtpApp.Test.Run ,False |
本書章節節選連載已完。想了解更多內容,請至各大書店或通過網絡購買本書。
版權聲明:51Testing軟件測試網及相關內容提供者擁有51testing.com內容的全部版權,未經明確的書面許可,任何人或單位不得對本網站內容復制、轉載或進行鏡像。51testing軟件測試網歡迎與業內同行進行有益的合作和交流,如果有任何有關內容方面的合作事宜,請聯系我們第二十八章 QTP高級應用
在本章我們將會討論QTP中各種相對高級的常見問題及解決方案,這里故意把本章留在最后,主要的原因是本章的各種概念在之前的很多章節中已經提到過,我們還會介紹Settings對象在運行時遍歷所有的子項,此技術可以用于研究發現QTP的一些文檔未公開的隱藏特性。
不同機器的測試腳本同步執行
在一些復雜的測試系統場景下會需要QTP去通過腳本去觸發另一個腳本以及需要執行的被測應用,在這類情況下,我們需要通過同步通知方式來使不同種類的應用進行協同工作。
為了解決此類問題,我們需要從QTP腳本運行中獲取到過程信息,主要是通過QTP的自動化模型AOM下的Environment對象接口來實現所需要的同步進行協作和控制的腳本執行。以下腳本展示了怎樣通過自動化模型AOM獲取到本地機和遠程機上的環境變量Environment對象:
'獲取正在運行QTP的對象引用 Set qtpLocalPC = CreateObject("QuickTest.Application") sRemoteIP = "10.1.1.1" Set qtpRemotePC = CreateObject("QuickTest.Application", sRemoteIP) '獲取到環境變量 Set qtpLocalEnv = qtpLocalPC.Test.Environment Set qtpRemoteEnv = qtpRemotePC.Test.Environment '最終可以訪問到環境變量 MsgBox qtpLocalEnv("TestDir") MsgBox qtpRemoteEnv("TestDir") |
那么現在就需要等待QTP運行合適的位置時對指定環境變量進行更新,看一下如下QTP腳本:
QTP腳本1
'腳本1Script 1 '創建同步點環境變量 Environment.Value("SyncPoint1") = False Msgbox "Job 1 Completed" '實現任意操作 '<-- 另一個腳本會等待此同步點為True Environment.Value("SyncPoint1") = True Msgbox "Starting Job 2" |
VBScript腳本2
此Vbscript腳本會等待QTP腳本1更新SyncPoint1的狀態后才開始執行:
'本地機器IP strCompIP = "127.0.0.1" Set qtpApp = CreateObject("QuickTest.Application", strCompIP) '等待腳本停止 While Not qtpApp.Test.IsRunning Wend '等待同步點SyncPoint環境變量更新為True While qtpApp.Test.Environment("SyncPoint1") <> True Wend MsgBox "Script 1 has passed the sync point." |
在QTP中運行腳本1以及腳本2,腳本2將會等待Job 1 Competed消息后彈出Script1 has passed the sync point消息框。
posted on 2013-06-21 11:37 順其自然EVO 閱讀(360) 評論(0) 編輯 收藏 所屬分類: qtp