qileilove

          blog已經轉移至github,大家請訪問 http://qaseven.github.io/

          QTP自動化測試權威指南 連載(六)

           利用腳本停止腳本并重新運行腳本

            這里列舉一些常見的需要重新停止并重新運行腳本的情況:

            當動態加載環境變量后必須停止并重新運行才能被正確加載到測試腳本中

            當在測試TE過程中需要運行多個Session,QTP不允許在單次腳本運行中運行多個TE Session,若需在腳本中運行多個Session,那么就需要在每個Session最后停止并從下一個session點繼續執行。

            此技術通常用于重啟QTP并且只對第一次運行有效,當在不需要執行腳本并需要重新運行時停止QTP,通過運行一個異步腳本來控制當QTP一旦進入到非運行模式下就運行它直到腳本結束。

          '停止并重運行QTP
          Sub StopAndReRunQTP(restartFlag)
          '只在flag沒有被使用過時重啟
          If Setting.Exists(restartFlag) = False then
          '一旦flag不存在則保留flag在整個QTP Session中
          Setting.AddrestartFlag,True
          '調用異步腳本當QTP停止后控制其繼續執行
          Call AsyncReRunQTP
          '測試結果中關閉所有事件
          Reporter.Filter = rfDisableAll
          '當出現錯誤時立即停止腳本
          Setting("OnReplayError") = "Stop"
          '出現錯誤停止測試r
          Err.RaisevbObjectError+ 1,"Stop", "Causing Error for Stopping QTP"
          End if
          End Sub

          Sub AsyncReRunQTP()
          '運行時創建重運行腳本
          Call CreateQTPRunScript()
          '運行異步腳本
          Set wShell = CreateObject("WScript.Shell")
          wShell.Run"ReRunQTP.vbs"
          End Sub

          Public Function CreateQTPRunScript()
          '創建腳本等待qtp停止并重新運行
          Set fso = CreateObject("Scripting.FileSystemObject")
          setfile = fso.OpenTextFile("ReRunQTP.vbs",2, True)
          file.WriteLine"Set qtpApp = CreateObject(""QuickTest.Application"")"
          file.WriteLine"While qtpApp.Test.IsRunning"
          file.WriteLine"Wend"
          file.WriteLine"qtpApp.Test.Run ,False"
          file.close
          setfile = nothing
          setfso = nothing
          End Function

            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

          <2013年6月>
          2627282930311
          2345678
          9101112131415
          16171819202122
          23242526272829
          30123456

          導航

          統計

          常用鏈接

          留言簿(55)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 根河市| 合肥市| 柳林县| 丘北县| 黔东| 邵阳市| 池州市| 科尔| 平顺县| 永靖县| 石林| 瓦房店市| 文山县| 花垣县| 大余县| 万载县| 克东县| 珲春市| 遂平县| 大洼县| 阿拉善盟| 江门市| 鹿泉市| 隆子县| 柳州市| 北宁市| 宜兰市| 孝感市| 仪征市| 阳朔县| 阜城县| 炎陵县| 察哈| 锡林郭勒盟| 灵川县| 察雅县| 合水县| 禄劝| 阿克苏市| 平邑县| 曲靖市|