揭秘QTP之Reporter对象(2)

发表于:2011-12-15来源:未知作者:娃娃点击数: 标签:qtp
@Description 指定把日志写入节点下 Public Function EnterNode(ByRef NodeName, ByRef NodeContent) 用一个Dictionary对象来存储节点的信息 Set dicMetaDescription = CreateObject(Scripti

  '@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 "父节点","

这是一个拥有孩子的节点

Hello! How are you!.
"

 

  ' 在节点内写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.ltesting.net