vaguely
发表于 2007-9-13 16:52:01
没找到“花“的图标sdlkfj6 ,不然的话,一定送!!
yabest
发表于 2007-9-13 16:58:34
原帖由 jackymail 于 2007-9-13 16:51 发表 http://bbs.51testing.com/images/common/back.gif
说得很细致,学习了。
不过有一个问题。如果局部模式高于全局,那么On Error Resumt Next/On Error goto 0对任何一种全局模式都是有效的。
也就是说它们产生的效果是一样的。
不是说了嘛,局部高于全局,但是局部只在当前函数的局部范围内有效。
而Case函数及其子函数是受全局控制的,这就不一样了!
比如说这个主控Test,如果全局的设置成On error continue next step,那么Case函数里某个步骤发生错误了,Case函数还是会继续执行下一步骤,就会错上加错了!
所以全局的还是要设置成Stop Run模式!
[ 本帖最后由 yabest 于 2007-9-13 17:00 编辑 ]
vaguely
发表于 2007-9-13 17:02:29
Yabest, 还想继续问你
“每个Case出错时,出错位置都是难于预料的,比如弹出某个对话框时出错了。如果没有把这对话框消除掉,整个被测软件都无法操作了。
反正类似问题会很多,是无法预料的。要对每种可能出现的问题进行处理,很麻烦,也不大可能。
所以我们在某个Case失败后,都会初始化环境,杀掉被测试软件,并重新运行被测软件,重新登录系统。
这样才可以保证初始环境的正常,以避免影响下一个Case的执行。”
请问您是怎么做的“杀掉被测试软件,并重新运行被测软件"
我测是web应用系统,出错后,主窗口自动被杀掉了。请问别的副窗口怎么杀掉呢?谢谢
yabest
发表于 2007-9-13 17:02:55
原帖由 vaguely 于 2007-9-13 16:52 发表 http://bbs.51testing.com/images/common/back.gif
没找到“花“的图标sdlkfj6 ,不然的话,一定送!!
不用啦,有人替你送了!sdlkfj7
呵呵,还是jackymail有良心啊,良心大大的!sdlkfj3
yabest
发表于 2007-9-13 17:06:45
原帖由 vaguely 于 2007-9-13 17:02 发表 http://bbs.51testing.com/images/common/back.gif
Yabest, 还想继续问你
请问您是怎么做的“杀掉被测试软件,并重新运行被测软件"
我测是web应用系统,出错后,主窗口自动被杀掉了。请问别的副窗口怎么杀掉呢?谢谢
这个时候一定要心狠手辣,斩草除根,绝不留情!!!
SystemUtil.CloseProcessByName("别怪我杀你,都是被逼的!没有人能够逃出去,我不做个坏蛋,就得滚蛋,我不杀了你,就会吃亏!被逼的!被逼的!被逼的!被逼的!.exe")
这么小气,问题却挺多的!sdlkfj8
[ 本帖最后由 yabest 于 2007-9-13 17:12 编辑 ]
vaguely
发表于 2007-9-13 17:09:38
sdlkfj3 sdlkfj3 sdlkfj3
送给yabest老师的礼物
Report Manager
http://www.advancedqtp.com/knowladge-base/projects/reporter-manager/
我现在把它应用在我的框架中(从您那偷学来的)非常好
jackymail
发表于 2007-9-13 17:34:11
On error resume next
call testcase
msgbox err.number
err.clear
On error goto 0
Function testcase
msgbo "Test case"
End Function
不知道我这段话是不是文中讨论的问题
我在function里面故意加了一个错误,选择4中全局模式,产生效果一样,因为两个on error把需要处理的局部已经包住。
原帖由 yabest 于 2007-9-13 16:58 发表 http://bbs.51testing.com/images/common/back.gif
不是说了嘛,局部高于全局,但是局部只在当前函数的局部范围内有效。
而Case函数及其子函数是受全局控制的,这就不一样了!
比如说这个主控Test,如果全局的设置成On error continue next step,那么Case ...
yabest
发表于 2007-9-13 17:39:08
原帖由 jackymail 于 2007-9-13 17:34 发表 http://bbs.51testing.com/images/common/back.gif
On error resume next
call testcase
msgbox err.number
err.clear
On error goto 0
Function testcase
msgbo "Test case"
End Function
不知道我这段话是不是文中讨论的问题
我在function里面故 ...
你试试这个!对象库里不用建任何对象!
On error resume next
call testcase
msgbox "Error Number=" & Err.Number & ", Error Desc=" & Err.Description
err.clear
On error goto 0
Function testcase
msgbox "test 111"
JavaWindow("111").Close
msgbox "test 222"
JavaWindow("222").Close
msgbox "test 333"
JavaWindow("333").Close
End Function
vaguely
发表于 2007-9-13 17:42:14
好像只有我们几个在讨论这个帖子。似乎大多数人不太感兴趣。
不过yabest的方法,可以抛弃在程序中不厌其烦的写出错判断,这么好的方法没人顶,
我也只好自己偷着乐了
jackymail
发表于 2007-9-13 17:44:01
单纯运行这段代码,设置成几种全局模式得到的效果是一样的。
做法:我把代码拷贝到action里面,然后修改test option里面run的设置。
原帖由 yabest 于 2007-9-13 17:39 发表 http://bbs.51testing.com/images/common/back.gif
你试试这个!对象库里不用建任何对象!
On error resume next
call testcase
msgbox "Error Number=" & Err.Number & ", Error Desc=" & Err.Description
err.clear
On error goto 0
Function...
jackymail
发表于 2007-9-13 17:46:42
我觉得这种抛弃也无非是一种取舍,没有替代作用,如果自己编写容错和错误收集,这种方法是不能替代的。
这只是给了一种全局/局部范围内 决定 取舍的方法。
两个on error 决定了被其包围的部分使用on error resume next方法,外部代码的该怎样处理还怎样处理
原帖由 vaguely 于 2007-9-13 17:42 发表 http://bbs.51testing.com/images/common/back.gif
好像只有我们几个在讨论这个帖子。似乎大多数人不太感兴趣。
不过yabest的方法,可以抛弃在程序中不厌其烦的写出错判断,这么好的方法没人顶,
我也只好自己偷着乐了
vaguely
发表于 2007-9-13 17:52:31
"如果自己编写容错和错误收集"
那样的话,要写多少呢?严格的话,每一个步骤都要写。
我反正觉得太累了。
Yabest的方法,不用提前写任何的错误预判。
却可以捕捉到任何的错误,以及信息。还有错误发生的地点,图片。
这样做不是很简单有效么
jackymail
发表于 2007-9-13 17:57:20
。。。。。。
具个例子吧。
当发生某种错误的时候。就将被测试软件返回到某一个步骤,而不是直接杀掉进程。因为毕竟有些软件那样做代价太大。也可能损失之前的操作步骤,anyway.现在就是说如果要在错误发生的时候去对被测软件执行一些操作
在这种情况下,光收集错误是没有用的。必须要有接下来的步骤去处理想关操作,而不是vbscript得on error.
还有一些情况比如用某个对象的属性存在与否,是否等于某个值。这种情况下很可能vbscript是收集不到错误的。
总之on error只是一种接收和容纳错误的方法,其中一种而已,yabest给他总结出来了。。
原帖由 vaguely 于 2007-9-13 17:52 发表 http://bbs.51testing.com/images/common/back.gif
"如果自己编写容错和错误收集"
那样的话,要写多少呢?严格的话,每一个步骤都要写。
我反正觉得太累了。
Yabest的方法,不用提前写任何的错误预判。
却可以捕捉到任何的错误,以及信息。还有错误发生的 ...
[ 本帖最后由 jackymail 于 2007-9-13 18:07 编辑 ]
jackymail
发表于 2007-9-13 18:01:30
咸鱼不在线,估计下班了。。。
yabest
发表于 2007-9-13 18:11:13
刚实验了一下,都晕了,好像还更复杂!好像多了一条规律!
On Error Resume Next/On Error goto 0范围内调用的子孙函数,都自动变成Stop Run模式了!!!
我们主控Test本来就是Stop Run模式,所以没受影响,没发现这个规律!
[ 本帖最后由 yabest 于 2007-9-13 18:12 编辑 ]
vaguely
发表于 2007-9-13 18:24:02
yabest ,能把我加到你的msn么?谢谢
我刚给你发了邀请. 我保证,平时不汇总打扰你的
jackymail
发表于 2007-9-13 18:39:21
on error只控制紧邻他的那个语句或者函数,不管其它的
如果控制2个function就要2个on error
原帖由 yabest 于 2007-9-13 18:11 发表 http://bbs.51testing.com/images/common/back.gif
刚实验了一下,都晕了,好像还更复杂!好像多了一条规律!
On Error Resume Next/On Error goto 0范围内调用的子孙函数,都自动变成Stop Run模式了!!!
我们主控Test本来就是Stop Run模式,所以没受影响 ...
walker1020
发表于 2007-9-13 23:26:56
好久没有见到这么深入的讨论了,非常感谢楼主 vaguely 的不断提问,更要感谢yabest 和jackymail 的细致、专业、负责的回复。
vaguely
发表于 2007-9-14 09:50:31
谢谢斑竹对我的表扬,有点小骄傲现在sdlkfj6
ppent
发表于 2007-9-14 12:02:47
这帖子非顶不可,学习到不少东西,特别是错误处理策略。送朵花表示感谢。
yabest研究的很深入,是我的偶像。