2013-10-10 54 views
1

假设有一个测试脚本正在执行并发生错误,有人可以解释QTP如何检测到它是一个错误吗?基本上我想知道QTP如何检测到这个错误?例如:可能有些变量持续不断地检查是否发生了错误。QTP如何检测错误?

我看着Err.Number的,但错误已经发生之后被修改。 QTP如何知道Err.Number被修改?

我只是想运行批处理测试脚本,当测试脚本失败,我想写的错误描述和测试脚本名的文件,并跳过当前测试和执行下一个测试脚本。有任何想法吗?

+0

我认为这是不看QTP内部或你最好描述错误的是什么类型(即使在当时)无法回答。这也完全取决于你在这里讨论的是什么样的错误。语法错误,对象存储库错误等等。QTP不是监视Err.Number,而是QTP *是脚本执行引擎,通过引发异常来设置它。 – Xiaofu

+1

如果你想通过了解这些信息来实现某些特定的错误处理或报告,也许你可以在问题中提出这些细节,并获得一些更有用的答案。 – Xiaofu

+0

@xiaofu:我只想批量运行测试脚本,当测试脚本失败时,我只想将错误描述和测试脚本名称写入文件,并跳过当前测试并执行下一个测试脚本。任何想法? – bond007

回答

1

QTP报告说,测试执行在下列情况

  • 应该执行的操作的对象不能被识别
  • 当执行一个动作的动作失败的一个(例如非法值)
  • 失败
  • 检查点失败,这意味着测试创建者指定了应用程序应该具有的状态并且它实际上具有不同的值
  • 测试明确地向日志中写入错误(使用Reporter object
+0

除非OP每次都意味着“报告”而不是“检测”,否则我不确定这是否会回答这个问题。虽然他们的要求并不完全清楚,但也许你是比我更好的读者;) – Xiaofu

3

由于我实际上在说“编写你自己的测试执行引擎”,但这对你来说可能是有限的,但它完全可以实现。从小处着手,逐个构建功能,你就能拥有一些很酷的东西,很快就能满足你自己的独特需求。

虽然它也许有用的已停止测试赶紧叫了(也许做一个快速的故障诊断,不查看详细步骤)错误,请不要忽视其含有的详细步骤报告。当测试失败时,你需要知道什么地方出了错,并为什么,并有一个什么样的行动导致了失败的记录。

但是,这里有一个方法去满足你的要求:

  1. 使用使用QTP API您所选的支持的语言编写一个测试驱动程序,并引发QTP一个独立的运行每个测试。当调用Test.Run你可以控制的结果是使用RunResultsOptions结构保存。在您的测试中,将“运行会话期间发生错误时”保留为“弹出消息框”,以便在发生错误时停止。如果你想要不同的行为,那么在“错误继续下一次/错误转到0 /检查错误号和错误描述” - 块时逐个处理它。永远不要切换到“继续下一步”。

  2. 检查LastRunResults结构由Test.LastRunResults返回后的运行完成。 LastRunResults.Status会告诉你运行的状态,因此,让你决定是否要继续步骤#3,提取故障的详细信息。

  3. 解析results.xml从每个运行后的结果文件夹。它将位于{results folder} \ Report \ results.xml。扫描XML所有失败的步骤或仅仅是最后一个失败的步骤是微不足道的,因此您可以获取步骤详细信息并以您选择的格式将其保存到另一个文件。您将会寻找属性为eType = User的NodeArgs元素。然后,您可以找到该步骤的状态和附近的步骤详细信息。如果除了QTP自动生成的日志记录之外,还需要更多关于错误的信息,那么您需要在错误发生时捕获错误,并添加一些您自己的Reporter.ReportEvent语句以及更多的突出信息。

  4. 不要放弃你的结果汇总文件好玩的东西...

如果你希望使用QTP本身作为驱动程序一批测试(即按播放一次,运行所有测试)因此可以从子测试或其他东西中获得错误消息,然后我只会这样说:除非您只是运行相同测试的多次迭代,否则请不要这样做。使用QTP本身在单个史诗般的测试运行中运行你所有的测试是一个很糟糕的方式来做事情的原因很多,但我不打算在这里写一篇关于它的文章!