51Testing软件测试论坛

标题: 关于错误处理和场景恢复的疑问~~高手指导一下,谢谢 [打印本页]

作者: cyt6983115    时间: 2008-11-17 17:33
标题: 关于错误处理和场景恢复的疑问~~高手指导一下,谢谢
情况是这样的:目前脚本架构采用的是三层架构
第一层  Action1、  Action2、  Action3、  Action4、   Action5
第二曾  Action6(调用第一层的Action1、Action2 )     Action7(调用第一层Action3、  Action4、   Action5)
第三层 Action8(调用第二层的Action6、Action7 )

现在在第三层执行Action8 当调用到执行第一层Action1时出错,希望在主控层Action8能立即跳出Action6而继续执行Action7

目前场景恢复中的Proceed to next action or component iteration 是一个个Action退出,比如Action1出错了,就跳出Action1然后执行到Action2,如果Action2出错
就跳出Action2

现在希望能有一个全局错误控制,能从出错点直接跳出到主控层的下一步,希望高手指教一下,谢谢
作者: cyt6983115    时间: 2008-11-17 17:34
自己顶一下,期待高手解决
作者: cyt6983115    时间: 2008-11-18 08:58
再顶一下
期待有人能给点建议~~~
作者: walker1020    时间: 2008-11-18 12:51
设置一个自定义的环境变量,根据它的值来决定再运行哪个Action。
作者: gy21st    时间: 2008-11-18 14:43
1. 错误处理应该和业务逻辑没有关系。但从你的描述来看,似乎要用错误来定义业务逻辑,建议你重新考虑一下用例的结构设计
2.场景恢复完成后错误会清0,无法把错误传入调用者,所以只用QTP本身错误处理机制基本无法实现你的需求。
3.一定要这样做,有最笨的方法。定义全局变量,然后在场景恢复处理中使用functionCall,根据需求处理并更新全局变量的值。每个action的第一行代码判断全局变量的值,决定运行还是直接退出,这样可应该以达到你的目的。
作者: cyt6983115    时间: 2008-11-18 15:28
标题: 回复 4# 的帖子
不太明白~~
能不能说的具体点,谢过了
作者: cyt6983115    时间: 2008-11-18 16:14
标题: 回复 5# 的帖子
根据目前脚本的架构,必须得做成这样
对于第三种方法,因为现在对于错误的出现的地方是无法预知的,所以对于这全局变量是无法把握和赋值的
目前的想法是比如现在执行的脚本Action8中的Action6和Action7当执行Action6的时候无论什么地方出错就跳出Action6
而继续执行Action7   
而且你这种方法也从都要遍历每一个Action,包括Action6调用的Action   就是判断全局变量,看是否符合,否则退出,这个用场景恢复中的Proceed to next action or component iteration就可以做到了
不知道我理解的对不
不过还是谢谢你的建议
作者: gy21st    时间: 2008-11-18 23:57
原帖由 cyt6983115 于 2008-11-18 16:14 发表
根据目前脚本的架构,必须得做成这样
对于第三种方法,因为现在对于错误的出现的地方是无法预知的,所以对于这全局变量是无法把握和赋值的
目前的想法是比如现在执行的脚本Action8中的Action6和Action7当执行Action6的 ...


正是因为错误无法预知所以要你使用错误恢复处理中的functioncall来处理全局变量。
你说的方法和我的描述是两回事。
我曾经有一个帖子是关于QTP错误处理机制的。你仔细理解了再考虑处理方法吧。
作者: cyt6983115    时间: 2008-11-19 16:40
原帖由 gy21st 于 2008-11-18 23:57 发表


正是因为错误无法预知所以要你使用错误恢复处理中的functioncall来处理全局变量。
你说的方法和我的描述是两回事。
我曾经有一个帖子是关于QTP错误处理机制的。你仔细理解了再考虑处理方法吧。


我按照你说的方法在functioncall中定义全局变量,在第一次执行出错的时候能调用用到这个场景恢复,但在第二次出错QTP就卡住了(就像死机一样)
Trigger Event :    Test run error
Error:   Object not found
Recovery Operation:    Function Call
functioncall的代码是
Function RecoveryFunction1(Object, Method, Arguments, retVal)
  Environment.Value("errorflag")=2
End Function


请指点一二,万分感谢
作者: cyt6983115    时间: 2008-11-19 16:51
再顶一下
就是如果是单独的一个Test就不会出现死机状态
如果是多层嵌套Action(就像一楼说的那种)就会出现
快崩溃~~




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