重写QTP的Reporter方法

来源:互联网 发布:telnet 端口 原理 编辑:程序博客网 时间:2024/06/14 01:22

对于QTPReporter对象,我们不能通过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 fromthe test actions

Public Function GetReporter

   Set GetReporter = Reporter

End Function

 

'Class definition

'In the example, our class just reporter toa 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方法就是我们自定义的方法,而不是QTPReportEvent了:

Dim Reporter

Set Reporter = GetReporter

Reporter.ReportEvent"Fail","StepName1","StepDetails"