技术开发 频道

揭秘QTP之Reporter对象

【IT168 专稿】

    本文介绍了Reporter对象的几个鲜为人知的方法,利用LogEvent、SetContext、UnSetContext方法,可以实现日志的结构化、层次化写入,让你的QTP测试报告看起来更加有条理、分类清晰。

  
  QTP的日志其实有很多的缺点,尤其是当你的脚本依赖函数来执行的时候,因为函数执行时调用Reporter对象来写日志,只会顺序从上到下、扁平、不分类地写下去,如图1所示。

图1  函数执行时调用Reporter对象写日志的问题

  而不像在Action中写日志一样,按一定的层次关系来写日志(例如根据调用的关系嵌套)。那么如何让函数调用Reporter对象来写日志时也具备一定的层次关系,让日志展现更加灵活、分类清晰呢?其实QTP的Report对象中暗藏了不少可利用的属性和方法。

Report对象的“私家珍藏”

  在关键字视图通过InterlliSense查看QTP的Report对象时(如图2所示),可发现仅有3个属性、1个方法可用,其中最常用的是ReportEvent方法。

图2  Reporter对象的公开方法和属性

  而实际上,QTP的Report对象还有其他的方法可用,这些方法并没有对外公开,例如可用LogEvent方法来在日志树中写入一个节点:

'  使用Reporter对象的LogEvent写入新节点
intContext = Reporter.LogEvent("User", dicMetaDescription, Reporter.GetContext)

  用SetContext方法把某个节点作为父节点,这样的话,后续写入的Log都将在这个父节点之下:

' 调用Reporter对象的SetContext把新写入的节点作为父节点
Reporter.SetContext intContext

  如果要退出该节点,返回日志树的上一层,则可调用UnSetContext方法即可,如下脚本所示:

'调用Reporter对象的UnSetContext,返回上一层
Reporter.UnSetContext

 

0
相关文章