這個方法的作用我簡單描述一下:首先是指定一個目錄,然後檢查是否從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)
Set objFolder = objFSO.CreateFolder(strDesktopFolder)
'确定儲存檔案的名稱
tmpTime=Time()
t=Split(tmpTime,":")
If Len(t(0))<2 Then
t(0) = "0" & t(0)
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
If Len(tmpDay) < 2 Then
tmpDay = "0" & tmpDay
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}"
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.ReportEvent micFail, strStepInfo, oClass & "(" & Chr(34) & oName & Chr(34) & ")." & Method & " " & Arguments(0) & " 出現錯誤,錯誤編号:" & retVal
' Arguments應該是1個或多個參數,此處隻考慮了1個的情況,以後需要維護。
'清除Error并退出Test
If err.number<>0 Then
Err.Clear
' Reporter.ReportEvent micFail, strStepInfo, Method & " " & Arguments(0) & " 出現錯誤,錯誤編号:" & retVal
On Error Goto 0
systemutil.CloseProcessByName("iexplore.exe")
ExitTest
End Function
====================================分割線================================
最新内容請見作者的GitHub頁:http://qaseven.github.io/