对于 QTP 的 Reporter 对象,我们不能通过 RegisterUserFunc 的方法,像重写其他测试对象的方法一样去自定义我们自己的 Reporter 对象并注册进去。
但是 Yaron Assa 告诉我们一种实现的办法:
http://www.advancedqtp.com/community/blogs/yaron-assas-blog144/overriding-qtps-native-reporter/
这种方法通过写一个与 Reporter 对象同名的的类来实现:
'Override it with our custom class
Dim Reporter
Set Reporter = New clsReporter
'Define a funnel function to be called from the test actions
Public Function GetReporter
Set GetReporter = Reporter
End Function
'Class definition
'In the example, our class just reporter to a text file
Class clsReporter
Dim oFileReporter
Public Sub ReportEvent(iStatus, sStepName, sDetails)
oFileReporter.AppendAllText "c:/log.txt", iStatus & " : " & sStepName & " - " & sDetails & vbcrlf
End Sub
Private Sub Class_Initialize
Set oFIleReporter = DotNetFactory("System.IO.File")
End Sub
End Class
然后在 Action 中定义 Reporter 并获取对象来使用,这样在脚本中使用的 ReportEvent 方法就是我们自定义的方法,而不是 QTP 的 ReportEvent 了:
Dim Reporter
Set Reporter = GetReporter
Reporter.ReportEvent "Fail","StepName1","StepDetails"