qileilove

          blog已經(jīng)轉(zhuǎn)移至github,大家請(qǐng)?jiān)L問(wèn) http://qaseven.github.io/

          QTP中用于場(chǎng)景恢復(fù)的函數(shù)

           在制作場(chǎng)景恢復(fù)的時(shí)候可以選擇調(diào)用函數(shù)來(lái)解決,下面的函數(shù)就是為此寫(xiě)的。因?yàn)橹坝玫膱?chǎng)景恢復(fù)只報(bào)錯(cuò)了,看報(bào)告后大概了解了Object、Method、Arguments、retVal等參數(shù)的意義,于是寫(xiě)了這個(gè)方法,一方面可以截圖,另一方面可以在報(bào)告中看到哪個(gè)對(duì)象出問(wèn)題了。因?yàn)槲医?jīng)常是通過(guò)公司的自動(dòng)化平臺(tái)調(diào)用測(cè)試案例,一般晚上或凌晨執(zhí)行,第二天看結(jié)果,看結(jié)果的時(shí)候一般直接從QC打開(kāi)報(bào)告查看,這樣方便自己定位問(wèn)題。

            這個(gè)方法的作用我簡(jiǎn)單描述一下:首先是指定一個(gè)目錄,然后檢查是否從QC調(diào)用的(因?yàn)橛袝r(shí)候自己?jiǎn)螜C(jī)執(zhí)行也用到這個(gè)),如果是就記錄測(cè)試集的名稱(chēng),如果不是就放到SingleTest目錄,然后判斷對(duì)應(yīng)的目錄是否存在,不存在就創(chuàng)建目錄。之后是創(chuàng)建日期時(shí)間標(biāo)簽,然后把文件完整路徑組合起來(lái),并加上了案例名稱(chēng),測(cè)試機(jī)器等等(因?yàn)橛泻芏嗯_(tái)機(jī)器,方便查看是否某臺(tái)機(jī)器出問(wèn)題了)。之后模擬2次回車(chē)按鍵是防止有異常對(duì)話(huà)框存在,然后把原來(lái)的對(duì)象語(yǔ)句自己還原回來(lái),這樣如果是某個(gè)對(duì)象執(zhí)行什么操作的時(shí)候語(yǔ)句出錯(cuò),就可以在報(bào)告里看到了。

            當(dāng)然并不是很完善,比如時(shí)間標(biāo)簽的分秒沒(méi)有加0的判斷,Arguments其實(shí)是個(gè)集合,只不過(guò)我只考慮了1個(gè)的情況,沒(méi)考慮多個(gè)的情況。

            需要用這個(gè)的朋友可以自己稍微維護(hù)改進(jìn)一下。使用方法就是自己創(chuàng)建一個(gè)場(chǎng)景恢復(fù),然后選擇指定文件里的函數(shù),下面的函數(shù)最好單獨(dú)保存為一個(gè)文件,因?yàn)槲抑鞍阉臀业暮瘮?shù)庫(kù)放在一起,發(fā)現(xiàn)里面的初始化函數(shù)被執(zhí)行了2次,可能和場(chǎng)景恢復(fù)有關(guān),分開(kāi)后就沒(méi)問(wèn)題了。

          '用于恢復(fù)場(chǎng)景控制。
          Function RecoveryFunctions(Object, Method, Arguments, retVal)
             '有錯(cuò)誤發(fā)生時(shí),對(duì)Desktop進(jìn)行截圖并保存
          ' SaveTestError ""
           Set objWS = CreateObject("WScript.Shell")
           strDesktopFolder = "T:/TestData/測(cè)試組/測(cè)試截圖/"
           If QCUtil.IsConnected then
            If TypeName(QCUtil.CurrentTestSet) <> "Nothing" Then
             set CurrentTSTest = QCUtil.CurrentTestSet
             strDesktopFolder = strDesktopFolder & CurrentTSTest.Name    '如果從QC的測(cè)試集運(yùn)行的,則保存到測(cè)試集名字的目錄下
            Else
             strDesktopFolder = strDesktopFolder & "SingleTest"    '如果不是從QC運(yùn)行,保存到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
           '確定保存文件的名稱(chēng)
           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))
           '如果月或日不足兩位,前面補(bǔ)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 & "/[測(cè)試案例]" & Environment("TestName") & "_[測(cè)試機(jī)器]" & Environment("LocalHostName") & "_[測(cè)試時(shí)間]" & strTimeStamp & "_Error.png"   '組合出截圖文件的名稱(chēng)
           '對(duì)Desktop截圖并保存
           Desktop.CaptureBitmap strFile
           
           reporter.Filter = 0
           Reporter.ReportEvent micFail,"案例失敗","本處提交失敗報(bào)告是為了避免下面因?yàn)閿?shù)據(jù)問(wèn)題導(dǎo)致錯(cuò)誤報(bào)告沒(méi)有正常提交。"
           reporter.Filter = 3
           set WshShell = CreateObject("WScript.Shell")
           WshShell.SendKeys "{ENTER}"
           WshShell.SendKeys "{ENTER}"
           strStepInfo = "Test(" & Environment("TestName") & ")-Action(" & Environment("ActionName") & ") 發(fā)生非預(yù)期錯(cuò)誤,測(cè)試退出"
          ' strDetails = "錯(cuò)誤編號(hào):" & CStr(Err.Number) & ",錯(cuò)誤描述:" & 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) & " 出現(xiàn)錯(cuò)誤,錯(cuò)誤編號(hào):" & retVal
                  ' Arguments應(yīng)該是1個(gè)或多個(gè)參數(shù),此處只考慮了1個(gè)的情況,以后需要維護(hù)。
           reporter.Filter = 3
           '清除Error并退出Test
           If err.number<>0 Then
                      Err.Clear
           End If
          ' Reporter.ReportEvent micFail, strStepInfo, Method & " " & Arguments(0) & " 出現(xiàn)錯(cuò)誤,錯(cuò)誤編號(hào):" & retVal
           On Error Goto 0
           systemutil.CloseProcessByName("iexplore.exe")
           ExitTest
          End Function

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

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

          導(dǎo)航

          統(tǒng)計(jì)

          常用鏈接

          留言簿(55)

          隨筆分類(lèi)

          隨筆檔案

          文章分類(lèi)

          文章檔案

          搜索

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 安远县| 扶余县| 荣昌县| 平谷区| 韩城市| 珠海市| 新疆| 于都县| 筠连县| 边坝县| 西昌市| 喜德县| 确山县| 武冈市| 定南县| 佳木斯市| 濮阳市| 湖北省| 凌源市| 山东| 仁寿县| 江西省| 诸暨市| 肃北| 江门市| 灵石县| 错那县| 新密市| 乌鲁木齐县| 个旧市| 安福县| 丹棱县| 晋州市| 分宜县| 岳阳市| 陆河县| 揭阳市| 北流市| 五华县| 三穗县| 宕昌县|