51Testing软件测试论坛

标题: 启动recovery机制的条件是什么? [打印本页]

作者: denisye    时间: 2006-10-10 11:18
标题: 启动recovery机制的条件是什么?
运行QTP脚本,我希望能在出现错误的时候执行recovery的恢复机制

设定条件:
  Recovery-->Test Run Error-->Any Error-->Fanction Call-->Proceed to next step

我的脚本:

For i=1 to 10
    err.raise 6                                                                              '产生错误 不能启动recovery
    Browser("fdsafd").page("abc").webedit("afa").Set "test" '对象库没有此对象,产生错误 不能启动recovery
Next
Browser("Administration").Page("Administration").Image("MyCompany").Click  '对像库有对象,运行时产生错误,能启动recovery

实际运行的情况是,第一句第二句我故意产生的错误不能启动recovery机制,而第三句则启用了,我设定的是所有错误均执行场景恢复,为什么会有这样的差别?
另外不知道是不是我记性不好了,这个脚本我在十一之前也运行过,当时的情况是所有的错误都可以正常的执行场景恢复的,十一回来后就变成现在这个情况,设置什么的我想不到有什么不一样的地方,遇到这问题很是迷惑,希望执心人指点帮助。
很乐意提供其它需要的信息^_^
作者: denisye    时间: 2006-10-10 11:19
第一次发帖,不知道是否符合要求,呵呵
作者: kissing    时间: 2006-10-10 11:28
xue xi等待高人讲解。。。
作者: denisye    时间: 2006-10-10 15:37
不要沉啊...............^_^
作者: xiaonan    时间: 2006-10-10 16:21
在“测试”>“设置”里有没有把恢复场景全部加进去了呢
作者: denisye    时间: 2006-10-10 16:35

如果没加的话最后一个错误不会启用场景恢复
先谢谢版主的关注
作者: denisye    时间: 2006-10-11 10:32
继续等待热心人的帮助.........
作者: denisye    时间: 2006-10-12 16:00
这个问题一直没搞明白
为了解决错误处理的问题,想了些其它的办法
需求:
  使用一个总的组织脚本去组织小脚本里面的可调用Action,当单个Action产生错误的时候,调用错误处理机制(在脚本里面实现,本来打算由Recovery返回错误代码,根据不同的错误代码进行不同的错误处理,在脚本里面进行错误处理的好处是组织脚本可以一级级向上嵌套,使用Recovery则不行),然后再进行后面的Action。不至于出了一个错误后面的Action全部跑不了。

实现:
  在Setting-->run里设置When error occurs during run session:Proceed to next action iteration。
  Recovery的错误代码不能正确返回,Err.description出了Action就清空,只能考虑采用GetLastError来得到错误代码,但由于GetLastError得到的错误代码是VBscript?or windows的错误代码,不能正确的分析得到QTP的错误类型,所以当错误一旦发生,启用环境重启机制(前提是所有的脚本的入口必需一致),以保证后面的脚本能正常的执行下去。


  调用Action比打开新脚本的效率要高很多,由组织脚本来充当入口执行便于并行组织运行大量脚本,如果能做到灵活根据不同的错误进行相应的处理就更好了。

  不知大家有没有更好的想法。希望能得到大家的帮助。
作者: QA_BAY    时间: 2006-10-12 17:07
原帖由 denisye 于 2006-10-10 11:18 发表
运行QTP脚本,我希望能在出现错误的时候执行recovery的恢复机制

设定条件:
  Recovery-->Test Run Error-->Any Error-->Fanction Call-->Proceed to next step

我的脚本:

For i=1 to 1 ...

你的Recovery设置是怎么设的,我记得当运行出错时就执行另一个动作或者运行另一个function
你设置的是什么错,Recovery有好几种错误,你的Trigger Event tab写的是什么?
如果可以,留个联系方式!
作者: denisye    时间: 2006-10-12 17:19
Recovery的设置就是Recovery-->Test Run Error-->Any Error-->Fanction Call-->Proceed to next step

当运行出错时就执行function
Recovery错误类型选Test Run Error里面的Any Error

我的MSN:denisye@21cn.com
非常高兴能得到版主的指教
同时也很非常欢迎任何对QTP有兴趣的XDJM加我为好友,呵呵

[ 本帖最后由 denisye 于 2006-10-12 17:24 编辑 ]
作者: QA_BAY    时间: 2006-10-13 12:21
很奇怪,Recovery只能触发对象库缺少的对象
设置Recovery 的触发条件是any error
由以下情况是不触发的
1)当这个对象不在对象库时,运行出错,不触发Recovery
2)当这个对象存在对象库时,修改运行脚本对象名,使它运行出错,不触发Recovery
以上两种应该包括在any error中的,但有可能Recovery做得不够好,需要改进,本来触发机制就需要支持这样的功能,如果没有就觉得用处不大! (只是自己的看法)
作者: denisye    时间: 2006-10-13 17:32
同意版主的意见
再次感谢版主的热情帮助,呵呵
最终我还是要采用GetLastError来得到错误信息,不能不说有一点点遗憾,如果还有更好的方法,希望能分享一下,呵呵




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2