4.1.4 重写Reporter对象
不知道大家有没有使用过自定义的Reporter,QTP的Reporter应用非常局限,甚至有时感觉设计的不是很合理,其实完全可以写自定义的结果报告,不过本小节不是讲解怎么设计结果报告,而是讲解通过重写QTP中的Reporter对象来完成自定义的结果报告。这样做的优势很明显,其一是让能够熟练使用Reporter对象的读者继续使用他们熟悉的函数,其二是可以充分利用Reporter对象的智能代码提示功能。省去配置自定义保留对象的麻烦:
'重写自定义类 Dim Reporter Set Reporter = New clsReporter '定义可以被Action调用的FUNCTION Public Function GetReporter Set GetReporter = Reporter End Function '类定义 Class clsReporter Dim oFileReporter Public Sub ReportEvent(iStatus, sStepName, sDetails) oFileReporter.AppendAllText "D:\hello.txt", _ sStepName & " - " & sDetails & " - " &Now & vbCrLf End Sub Private Sub Class_Initialize Set oFIleReporter = DotNetFactory("System.IO.File") End Sub End Class |
分析:
首先介绍一下clsReporter这个类,它主要实现的是,新建一个TXT文件,然后在里边写入内容。里面有一个函数名字为ReportEvent,注意这个函数名是不能改的,因为QTP中Reporter有一个方法也叫ReportEvent,这样才能够重写此函数,在类的最后还有一个初始化类,使用的是.WETFactory这个接口来调用.NET类,这个类中牵涉的知识点还是比较多的,若是不清楚某些基础知识,可到本书前面的章节中进行补习。
注意:
如果需要将此类应用到QTP的Resources中,就必须在此函数文件中定义类的实例化函数,这是因为QTP的Rescources不支持直接读取函数文件中的Class类,因此,需要增加一个步骤让QTP可以访问到函数库中的Class:
Set Reporter = New clsReporter '定义可以被Action调用的Function Public Function GetReporter Set GetReporter = Reporter End Function |
分析:
创建clsReporter这个类并返回Reporter对象,并通过GetReporter这个函数来把Reporter对象进行返回。接着就可以把以上所有的代码都保存为一个VBS文件,并通过QTP的Associated Function Libraries把此文件加载进来,这样就可以直接用代码来调用此函数,从而达到重写QTP中Reporter的方法的功效。
● 资源池加载视图(见图4-9)。
图4-9
如图4-9所示,当完成了函数库文件后,即可直接在QTP的Recources中加载此函数库文件进行使用。那么,如何来使用此函数库中的类文件呢,具体使用如下:
Dim Reporter Set Reporter = GetReporter |
● 脚本试图代码(见图4-10)。
图4-10
● 结果文件(见图4-11)。
图4-11
总结
Reporter对象其实还有很多我们不为人知的秘密,有很多值得我们去探索的地方,例如:通过Visual Studoin 8的Debug引擎查到的许多隐藏方法,以及在Reporter载入HTML文件并显示等。
本文选自《51Testing软件测试作品系列》之九——《精通QTP——自动化测试技术领航》。
本站经人民邮电出版社和作者的授权,近期将进行部分章节的独家连载,敬请期待!
版权声明:51Testing软件测试网获人民邮电出版社和作者授权独家连载本书部分章节。
任何个人或单位未获得明确的书面许可,不得对本文内容复制、转载或进行镜像,否则将追究法律责任。
相关阅读: