qileilove

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

          QTP中用于場景恢復的函數

           在制作場景恢復的時候可以選擇調用函數來解決,下面的函數就是為此寫的。因為之前用的場景恢復只報錯了,看報告后大概了解了Object、Method、Arguments、retVal等參數的意義,于是寫了這個方法,一方面可以截圖,另一方面可以在報告中看到哪個對象出問題了。因為我經常是通過公司的自動化平臺調用測試案例,一般晚上或凌晨執行,第二天看結果,看結果的時候一般直接從QC打開報告查看,這樣方便自己定位問題。

            這個方法的作用我簡單描述一下:首先是指定一個目錄,然后檢查是否從QC調用的(因為有時候自己單機執行也用到這個),如果是就記錄測試集的名稱,如果不是就放到SingleTest目錄,然后判斷對應的目錄是否存在,不存在就創建目錄。之后是創建日期時間標簽,然后把文件完整路徑組合起來,并加上了案例名稱,測試機器等等(因為有很多臺機器,方便查看是否某臺機器出問題了)。之后模擬2次回車按鍵是防止有異常對話框存在,然后把原來的對象語句自己還原回來,這樣如果是某個對象執行什么操作的時候語句出錯,就可以在報告里看到了。

            當然并不是很完善,比如時間標簽的分秒沒有加0的判斷,Arguments其實是個集合,只不過我只考慮了1個的情況,沒考慮多個的情況。

            需要用這個的朋友可以自己稍微維護改進一下。使用方法就是自己創建一個場景恢復,然后選擇指定文件里的函數,下面的函數最好單獨保存為一個文件,因為我之前把他和我的函數庫放在一起,發現里面的初始化函數被執行了2次,可能和場景恢復有關,分開后就沒問題了。

          '用于恢復場景控制。
          Function RecoveryFunctions(Object, Method, Arguments, retVal)
             '有錯誤發生時,對Desktop進行截圖并保存
          ' SaveTestError ""
           Set objWS = CreateObject("WScript.Shell")
           strDesktopFolder = "T:/TestData/測試組/測試截圖/"
           If QCUtil.IsConnected then
            If TypeName(QCUtil.CurrentTestSet) <> "Nothing" Then
             set CurrentTSTest = QCUtil.CurrentTestSet
             strDesktopFolder = strDesktopFolder & CurrentTSTest.Name    '如果從QC的測試集運行的,則保存到測試集名字的目錄下
            Else
             strDesktopFolder = strDesktopFolder & "SingleTest"    '如果不是從QC運行,保存到SingleTest目錄下
            End If
           Else
            strDesktopFolder = strDesktopFolder & "SingleTest"
           End If
                  Set objFSO = CreateObject("Scripting.FileSystemObject")
           If objFSO.FolderExists(strDesktopFolder) Then
            Set objFolder = objFSO.GetFolder(strDesktopFolder)
           Else
            Set objFolder = objFSO.CreateFolder(strDesktopFolder) 
           End If
           '確定保存文件的名稱
           tmpTime=Time()
           t=Split(tmpTime,":")
           If Len(t(0))<2 Then
            t(0) = "0" & t(0)
           End If
           tmpTime=t(0) & t(1) & t(2)
           
           tmpDate=CStr(Date())
           tmpYear = CStr(Year(tmpDate))
           tmpMonth = CStr(Month(tmpDate))
           tmpDay = CStr(Day(tmpDate))
           '如果月或日不足兩位,前面補0
           If Len(tmpMonth) < 2 Then
              tmpMonth = "0" & tmpMonth
           End If
           If Len(tmpDay) < 2 Then
              tmpDay = "0" & tmpDay
           End If
           tpmDate=tmpYear & tmpMonth & tmpDay
             
          ' strTimeStamp = CStr(Year(Now)) & CStr(Month(Now)) & CStr(Day(Now)) _
          '  & "_" & CStr(Hour(Now)) & CStr(Minute(Now)) & CStr(Second(Now))
           strTimeStamp = tpmDate & "_" & tmpTime
           strFile = strDesktopFolder & "/[測試案例]" & Environment("TestName") & "_[測試機器]" & Environment("LocalHostName") & "_[測試時間]" & strTimeStamp & "_Error.png"   '組合出截圖文件的名稱
           '對Desktop截圖并保存
           Desktop.CaptureBitmap strFile
           
           reporter.Filter = 0
           Reporter.ReportEvent micFail,"案例失敗","本處提交失敗報告是為了避免下面因為數據問題導致錯誤報告沒有正常提交。"
           reporter.Filter = 3
           set WshShell = CreateObject("WScript.Shell")
           WshShell.SendKeys "{ENTER}"
           WshShell.SendKeys "{ENTER}"
           strStepInfo = "Test(" & Environment("TestName") & ")-Action(" & Environment("ActionName") & ") 發生非預期錯誤,測試退出"
          ' strDetails = "錯誤編號:" & CStr(Err.Number) & ",錯誤描述:" & Err.Description
           On Error Resume Next
           oClass=Object.GetTOProperty("micclass")
           oName=Object.GetTOProperty("name")
           reporter.Filter = 0
           Reporter.ReportEvent micFail, strStepInfo, oClass & "(" & Chr(34) & oName & Chr(34) & ")." & Method & " " & Arguments(0) & " 出現錯誤,錯誤編號:" & retVal
                  ' Arguments應該是1個或多個參數,此處只考慮了1個的情況,以后需要維護。
           reporter.Filter = 3
           '清除Error并退出Test
           If err.number<>0 Then
                      Err.Clear
           End If
          ' Reporter.ReportEvent micFail, strStepInfo, Method & " " & Arguments(0) & " 出現錯誤,錯誤編號:" & retVal
           On Error Goto 0
           systemutil.CloseProcessByName("iexplore.exe")
           ExitTest
          End Function

          posted on 2012-07-03 09:42 順其自然EVO 閱讀(334) 評論(0)  編輯  收藏 所屬分類: qtp

          <2012年7月>
          24252627282930
          1234567
          891011121314
          15161718192021
          22232425262728
          2930311234

          導航

          統計

          常用鏈接

          留言簿(55)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 凯里市| 宝坻区| 岱山县| 墨玉县| 封开县| 洪泽县| 云梦县| 双鸭山市| 崇州市| 环江| 济宁市| 新野县| 红河县| 洛浦县| 万盛区| 确山县| 新丰县| 甘洛县| 汝南县| 吴桥县| 扶风县| 新蔡县| 房产| 蓬莱市| 滨海县| 德钦县| 砀山县| 甘孜县| 颍上县| 沈丘县| 甘洛县| 民丰县| 九台市| 望谟县| 凤山市| 丰台区| 壶关县| 农安县| 海伦市| 扬中市| 焉耆|