执行恢复方案时获取错误信息

时间:2016-06-06 14:54:54

标签: qtp hp-uft

首先我需要完成的事情...... 如果测试失败,则会打开Web浏览器,我需要将其关闭。我不能只关闭iexplore.exe,因为可能有其他浏览器窗口打开,我想要打开。

现在... 我有一个恢复方案,触发测试执行中的任何错误,我关闭特定的浏览器窗口。当测试失败时,它会启动并关闭浏览器。优秀。问题是测试被标记为已通过。我可以使用reporter.reportevent将其失败,但我仍然会错过有关错误的数据。

如果我禁用恢复方案,则测试失败,正确,并且我有一堆关于测试失败原因的信息。是否可以将该信息传递给恢复方案?所以我可以关闭浏览器,测试失败并获得有关问题的信息。

1 个答案:

答案 0 :(得分:1)

这实际上取决于您的测试失败的方式。恢复方案非常适合处理完全不可预测的情况 - 例如浏览器窗口在不可预测的时间完全崩溃,或网络连接因任何原因而丢失,或者更糟糕的是,出现了一些唠叨屏幕,提供升级到最新的操作系统并接管屏幕...

如果您的脚本在可预测的位置失败,那么您可以在IF语句中进行检查以确保您的下一步是可行的(即检查button.exists),那么您不需要依赖在恢复方案中 - 您将直接启动失败测试过程。

这就是我的工作 - 我有一个名为FailTestBecause()的函数,它接受一个参数 - 一个包含失败原因的字符串(我知道原因是因为包含对此函数的调用的if语句)

FailTestBecause()首先设置一个指示失败的标志,将失败消息记录到报告者,日志和我自己的错误文件,然后尝试触发一个名为"完成测试"的操作。如果操作:完成测试不存在,则使用Exittest()正常退出。

FinishTest是我测试中的最后一个操作,当它启动时,它会检查错误标志。无论哪种方式,它的工作是将任何剩余的文件上传回QC / ALM。这样,我总是在脚本实际停止之前收集我的测试数据并上传到QC。

我的代码充满了失败检查。这是一个例子...

Browser("Trade").Page("Login Page").WebEdit("User ID").Set User_ID
Browser("Trade").Page("Login Page").WebEdit("Password").SetSecure User_Password
Browser("Trade").Page("Login Page").WebButton("Login").Click

Do Until Browser("Trade").Page("Main Page").Exist(0)
  If Browser("Trade").Page("Login Page").WebElement("Login Failed").Exist(0) then 
    FailTestBecause "Login Failed, user credentials didn't work"
  ElseIf Browser("Trade").Page("Challenge Questions").Exist(0) then
    say "Found Challenge Questions Screen, handling it..."
    RunAction "Handle Challenge Questions", OneIteration
  ElseIF Browser("Trade").Page("Create Password").Exist(0) then
    FailTestBecause "Detected new password, requires manual change"
  ElseIf not Browser("Trade").Exist(0) then
    FailTestBecause "Browser page crashed?"
  Else
    FailTestBecause "Something (unhandled) went wrong, please review log"
  End If
Loop

经常检查故障。毕竟,我们是测试人员。