'@Description 指定把日志寫入節點下
Public Function EnterNode(ByRef NodeName, ByRef NodeContent)
' 用一個Dictionary對象來存儲節點的信息
Set dicMetaDescription = CreateObject("Scripting.Dictionary")
' 設置節點的狀態
dicMetaDescription("Status") = MicDone
' 設置節點的名稱
dicMetaDescription("PlainTextNodeName") = NodeName
' 設置節點的詳細描述信息(可以使用HTML格式)
dicMetaDescription("StepHtmlInfo") = NodeContent
' 設置節點的圖標
dicMetaDescription("DllIconIndex") = 210
dicMetaDescription("DllIconSelIndex") = 210
' 節點圖標從ContextManager.dll這個DLL文件中讀取
dicMetaDescription("DllPAth") = "D:\Program Files\HP\QuickTest Professional\bin\ContextManager.dll"
' 使用Reporter對象的LogEvent寫入新節點
intContext = Reporter.LogEvent("User", dicMetaDescription, Reporter.GetContext)
' 調用Reporter對象的SetContext把新寫入的節點作為父節點
Reporter.SetContext intContext
End Function
(2)然后再定義一個與“EnterNode”相應的函數“ExitNode”,如圖5所示:
圖5 定義函數ExitNode
ExitNode函數用于退出當前日志節點,需要與EnterNode配對使用,函數的腳本如下所示:
'@Description 退出當前日志節點(與EnterNode配對使用)
Public Function ExitNode
'調用Reporter對象的UnSetContext,返回上一層
Reporter.UnSetContext
End Function
(3)有了EnterNode和ExitNode函數后,我們就可以像下面的例子一樣使用EnterNode和ExitNode,實現日志記錄的結構化、層次化寫入:
' 進入節點
EnterNode "父節點","
' 在節點內寫Log
Reporter.ReportEvent MicPass, "Step1", "Step1 Pass!"
Reporter.ReportEvent MicWarnning, "Step2", "Step2 Pass With Warnning!"
Reporter.ReportEvent MicFail, "Step2", "Step2 Fail!"
' 退出節點
ExitNode
' 在節點之外寫Log
Reporter.ReportEvent MicPass, "Case2", "Case2 Pass!"
該腳本首先調用EnterNode,創建一個"父節點",并自動進入該節點的層次下,然后使用普通的ReportEvent方法寫日志,當需要退出該"父節點"時,就調用一下ExitNode,則后續的日志都在該節點之外寫。
小結
本文介紹了Reporter對象的幾個鮮為人知的方法,利用LogEvent、SetContext、UnSetContext這幾個方法,可以實現日志的結構化、層次化寫入,讓你的QTP測試報告看起來更加有條理、分類清晰。
不知道為什么QTP的幫助文檔中沒有列出這幾個有用的方法,但是不管怎樣,在我們揭開了Reporter對象的這些隱藏的方法后,我們就可以充分利用它們為我們服務,讓我們的自動化測試腳本更加強大。
原文轉自:http://www.anti-gravitydesign.com