yabest
发表于 2007-9-14 13:49:50
原帖由 ppent 于 2007-9-14 12:02 发表 http://bbs.51testing.com/images/common/back.gif
这帖子非顶不可,学习到不少东西,特别是错误处理策略。送朵花表示感谢。
yabest研究的很深入,是我的偶像。
怎么才送一朵啊sdlkfj5
[ 本帖最后由 yabest 于 2007-9-14 13:51 编辑 ]
jackymail
发表于 2007-9-14 15:25:18
我自来这论坛以后,除了3个鸡蛋,什么都没得到过。被人用光200多积分。从高级战友一夜变成新手上路。
3个鸡蛋,3个人送的。。。。。
原帖由 yabest 于 2007-9-14 13:49 发表 http://bbs.51testing.com/images/common/back.gif
怎么才送一朵啊sdlkfj5
yabest
发表于 2007-9-14 15:41:35
原帖由 jackymail 于 2007-9-14 15:25 发表 http://bbs.51testing.com/images/common/back.gif
我自来这论坛以后,除了3个鸡蛋,什么都没得到过。被人用光200多积分。从高级战友一夜变成新手上路。
3个鸡蛋,3个人送的。。。。。
天降大任,必先苦其心志。。。
看来你前途大大的!要坚持!我是很看好你的!!!sdlkfj3
vaguely
发表于 2007-9-14 15:51:06
我到现在在才明白花是要买的。可是我一分钱都没有sdlkfj9
不知道在这里前要怎么赚,除了卖帖子(我不喜欢)
yabest
发表于 2007-9-14 15:56:32
原帖由 vaguely 于 2007-9-14 15:51 发表 http://bbs.51testing.com/images/common/back.gif
我到现在在才明白花是要买的。可是我一分钱都没有sdlkfj9
不知道在这里前要怎么赚,除了卖帖子(我不喜欢)
“鲜花每束的价格为每朵:0金钱” !!!
小气就认了呗! 不要找借口嘛!sdlkfj8
[ 本帖最后由 yabest 于 2007-9-14 15:58 编辑 ]
ppent
发表于 2007-10-11 11:59:27
最近在做一些产品自动化测试的尝试,在研究yabest的这个处理模式时,遇到一些问题。由于对QTP还不能很深入的掌握,因此提出来请教大家,看如何解决。
yabest的这种方式应用于顶层的主控脚本中,在此脚本中通过call function的方式调用"本脚本中"的其他函数。因此,测试用例必须以function的形式出现在主控Test中,才能达到这种局部和全局的错误处理控制效果。
问题1:如果将function统一放到vbs中,则错误控制处理无效(出错时直接stoprun了,不能返回到主控Test)。但将所有的用例以function的形式放到主控Test中不便于维护。
问题2:如果将function换成Action,将用例放到各个usable的Action中,在主控Test调用,该错误处理控制也无效。
那么,怎样的脚本组织方式,才能更好的做到错误处理呢?
木卫十二
发表于 2007-10-11 14:31:20
嗯,跟楼上有相似的问题。。
我的错误处理是用Recovery Scenario调用处理错误的Function来进行的,也有一些缺陷。
正琢磨着更好的办法。。。
yabest
发表于 2007-10-11 15:39:44
原帖由 ppent 于 2007-10-11 11:59 发表 http://bbs.51testing.com/images/common/back.gif
...
yabest的这种方式应用于顶层的主控脚本中,在此脚本中通过call function的方式调用"本脚本中"的其他函数。因此,测试用例必须以function的形式出现在主控Test中,才能达到这种局部和全局的错误处理控制效果。
问题1:如果将function统一放到vbs中,则错误控制处理无效(出错时直接stoprun了,不能返回到主控Test)。但将所有的用例以function的形式放到主控Test中不便于维护。
问题2:如果将function换成Action,将用例放到各个usable的Action中,在主控Test调用,该错误处理控制也无效。
怎么叫错误控制处理无效呢?函数不管是放在vbs文件里,还是放在action里,通过On Error Resume Next/On Error goto 0方式调用函数,主控Test都可以捕获函数里发生的错误的!
yabest
发表于 2007-10-11 15:42:46
原帖由 木卫十二 于 2007-10-11 14:31 发表 http://bbs.51testing.com/images/common/back.gif
嗯,跟楼上有相似的问题。。
我的错误处理是用Recovery Scenario调用处理错误的Function来进行的,也有一些缺陷。
正琢磨着更好的办法。。。
其实出错后首要的是报告错误原因,恢复处理可以在外层处理。
没有用过Recovery Scenario,但是不知道Recovery Scenario方式能报告发生错误的错误原因吗?
木卫十二
发表于 2007-10-11 16:21:48
恢复场景有很大的局限性,只能对特定对象的错误操作,如我的项目一般错误会弹出对话框,就是用它处理的。。
用所讨论的On error resume next的办法我把函数放在vbs里调用时就不管用了,只能在同一个test 里可用。不知道是不是我的某些设置的问题。:L
我把一般的出错设置是pop up message box。。。调用时就直接弹出了出错框:Q
ppent
发表于 2007-10-11 16:25:51
原帖由 yabest 于 2007-10-11 15:39 发表 http://bbs.51testing.com/images/common/back.gif
怎么叫错误控制处理无效呢?函数不管是放在vbs文件里,还是放在action里,通过On Error Resume Next/On Error goto 0方式调用函数,主控Test都可以捕获函数里发生的错误的!
奇怪了,在我的脚本中,只有当前Test的function call才能正确的处理错误,如果放到VBS中就直接停止了。Test Settings的错误处理是stop run。
yabest,是否还有其他地方需要设置?
ppent
发表于 2007-10-11 16:31:57
我的脚本:Q
'Test
Err.Clear
On Error Resume Next
call aa()
If Err.Number <> 0 Then
WriteLog Err.Number'错误码
WriteLog Err.Description'错误描述
WriteLog Err.Source'错误来源对象,不过好像没啥用
End If
Err.Clear
On Error goto 0
'my.vbs
Function aa()
Browser("FreeQuery").Close '访问不存在的页面,制造错误
msgbox "aaa"
End Function
danmy
发表于 2007-10-11 17:22:19
QTP自带的Recovery Scenario其实就是很好的错误处理的方式,可以自己写一个错误处理函数,出错由场景判断.
我现在的函数是出错则重复当前操作,连续出错5次stop Test.(因为会有些希望忽略的错误,由别的场景来进行处理,此时这个地方会记录一个错误,处理不及时或许2到3个错误)
日志里记录出错的对象,出错描述,出错对象的参数.
hsjzfling
发表于 2007-10-11 17:22:30
这两周一直在找这篇帖子没找到,现在总算发现了,这么好的帖子不可不顶,收藏+学习~
yabest
发表于 2007-10-12 16:53:09
原帖由 ppent 于 2007-10-11 16:25 发表 http://bbs.51testing.com/images/common/back.gif
奇怪了,在我的脚本中,只有当前Test的function call才能正确的处理错误,如果放到VBS中就直接停止了。Test Settings的错误处理是stop run。
yabest,是否还有其他地方需要设置?
呵呵,我试了一下,用Resource->Libraries来加载vbs文件,好像有这个问题!
不过我的框架是通用的,所以是用Executefile方法来动态加载vbs文件的,可以正常捕获错误信息,没有问题。
你也可以试试用Executefile方法来加载!
jifeng
发表于 2008-8-29 13:38:15
好贴,顶起
zte_boy
发表于 2008-8-29 14:22:46
Resource->Libraries加载的vbs执行时的错误是无法返回主控的action,只要executefile的才可以
通常的做法是动态加载
executefile filename
execute "call "& functionname
lin85210
发表于 2008-10-30 15:04:58
看了看,绝对经典。楼主,谢谢你
daren_liu
发表于 2008-10-31 17:51:30
:victory:
walker1020
发表于 2009-4-19 20:36:49
此帖对QTP出错处理讨论地非常深入,值得仔细研究和学习。