51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

楼主: vaguely
打印 上一主题 下一主题

[求助] 请教一个QTP出错处理的问题(和yabest的框架有关)

[复制链接]

该用户从未签到

21#
 楼主| 发表于 2007-9-13 16:52:01 | 只看该作者
没找到“花“的图标sdlkfj6 ,不然的话,一定送!!
回复 支持 反对

使用道具 举报

该用户从未签到

22#
发表于 2007-9-13 16:58:34 | 只看该作者
原帖由 jackymail 于 2007-9-13 16:51 发表
说得很细致,学习了。

不过有一个问题。如果局部模式高于全局,那么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 编辑 ]
回复 支持 反对

使用道具 举报

该用户从未签到

23#
 楼主| 发表于 2007-9-13 17:02:29 | 只看该作者
Yabest, 还想继续问你

“每个Case出错时,出错位置都是难于预料的,比如弹出某个对话框时出错了。如果没有把这对话框消除掉,整个被测软件都无法操作了。
反正类似问题会很多,是无法预料的。要对每种可能出现的问题进行处理,很麻烦,也不大可能。

所以我们在某个Case失败后,都会初始化环境,杀掉被测试软件,并重新运行被测软件,重新登录系统。
这样才可以保证初始环境的正常,以避免影响下一个Case的执行。”

请问您是怎么做的“杀掉被测试软件,并重新运行被测软件"
我测是web应用系统,出错后,主窗口自动被杀掉了。请问别的副窗口怎么杀掉呢?谢谢
回复 支持 反对

使用道具 举报

该用户从未签到

24#
发表于 2007-9-13 17:02:55 | 只看该作者
原帖由 vaguely 于 2007-9-13 16:52 发表
没找到“花“的图标sdlkfj6 ,不然的话,一定送!!


不用啦,有人替你送了!sdlkfj7
呵呵,还是jackymail有良心啊,良心大大的!sdlkfj3
回复 支持 反对

使用道具 举报

该用户从未签到

25#
发表于 2007-9-13 17:06:45 | 只看该作者
原帖由 vaguely 于 2007-9-13 17:02 发表
Yabest, 还想继续问你

请问您是怎么做的“杀掉被测试软件,并重新运行被测软件"
我测是web应用系统,出错后,主窗口自动被杀掉了。请问别的副窗口怎么杀掉呢?谢谢



这个时候一定要心狠手辣,斩草除根,绝不留情!!!

SystemUtil.CloseProcessByName("别怪我杀你,都是被逼的!没有人能够逃出去,我不做个坏蛋,就得滚蛋,我不杀了你,就会吃亏!被逼的!被逼的!被逼的!被逼的!.exe")

这么小气,问题却挺多的!sdlkfj8

[ 本帖最后由 yabest 于 2007-9-13 17:12 编辑 ]
回复 支持 反对

使用道具 举报

该用户从未签到

26#
 楼主| 发表于 2007-9-13 17:09:38 | 只看该作者
sdlkfj3 sdlkfj3 sdlkfj3

送给yabest老师的礼物

Report Manager
http://www.advancedqtp.com/knowl ... s/reporter-manager/

我现在把它应用在我的框架中(从您那偷学来的)非常好
回复 支持 反对

使用道具 举报

该用户从未签到

27#
发表于 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 发表

不是说了嘛,局部高于全局,但是局部只在当前函数的局部范围内有效。
而Case函数及其子函数是受全局控制的,这就不一样了!

比如说这个主控Test,如果全局的设置成On error continue next step,那么Case ...
回复 支持 反对

使用道具 举报

该用户从未签到

28#
发表于 2007-9-13 17:39:08 | 只看该作者
原帖由 jackymail 于 2007-9-13 17:34 发表
On error resume next
call testcase
msgbox err.number
err.clear
On error goto 0

Function testcase
   msgbo "Test case"
End Function
不知道我这段话是不是文中讨论的问题
我在function里面故 ...


你试试这个!对象库里不用建任何对象!


  1. On error resume next
  2. call testcase
  3. msgbox "Error Number=" & Err.Number & ", Error Desc=" & Err.Description
  4. err.clear
  5. On error goto 0

  6. Function testcase
  7.   msgbox "test 111"
  8.   JavaWindow("111").Close
  9.   msgbox "test 222"
  10.   JavaWindow("222").Close
  11.   msgbox "test 333"
  12.   JavaWindow("333").Close
  13. End Function

复制代码
回复 支持 反对

使用道具 举报

该用户从未签到

29#
 楼主| 发表于 2007-9-13 17:42:14 | 只看该作者
好像只有我们几个在讨论这个帖子。似乎大多数人不太感兴趣。
不过yabest的方法,可以抛弃在程序中不厌其烦的写出错判断,这么好的方法没人顶,
我也只好自己偷着乐了
回复 支持 反对

使用道具 举报

该用户从未签到

30#
发表于 2007-9-13 17:44:01 | 只看该作者
单纯运行这段代码,设置成几种全局模式得到的效果是一样的。
做法:我把代码拷贝到action里面,然后修改test option里面run的设置。

原帖由 yabest 于 2007-9-13 17:39 发表


你试试这个!对象库里不用建任何对象!


On error resume next
call testcase
msgbox "Error Number=" & Err.Number & ", Error Desc=" & Err.Description
err.clear
On error goto 0

Function  ...
回复 支持 反对

使用道具 举报

该用户从未签到

31#
发表于 2007-9-13 17:46:42 | 只看该作者
我觉得这种抛弃也无非是一种取舍,没有替代作用,如果自己编写容错和错误收集,这种方法是不能替代的。
这只是给了一种全局/局部范围内 决定 取舍的方法。
两个on error 决定了被其包围的部分使用on error resume next方法,外部代码的该怎样处理还怎样处理
原帖由 vaguely 于 2007-9-13 17:42 发表
好像只有我们几个在讨论这个帖子。似乎大多数人不太感兴趣。
不过yabest的方法,可以抛弃在程序中不厌其烦的写出错判断,这么好的方法没人顶,
我也只好自己偷着乐了
回复 支持 反对

使用道具 举报

该用户从未签到

32#
 楼主| 发表于 2007-9-13 17:52:31 | 只看该作者
"如果自己编写容错和错误收集"

那样的话,要写多少呢?严格的话,每一个步骤都要写。
我反正觉得太累了。

Yabest的方法,不用提前写任何的错误预判。
却可以捕捉到任何的错误,以及信息。还有错误发生的地点,图片。
这样做不是很简单有效么
回复 支持 反对

使用道具 举报

该用户从未签到

33#
发表于 2007-9-13 17:57:20 | 只看该作者
。。。。。。

具个例子吧。
当发生某种错误的时候。就将被测试软件返回到某一个步骤,而不是直接杀掉进程。因为毕竟有些软件那样做代价太大。也可能损失之前的操作步骤,anyway.现在就是说如果要在错误发生的时候去对被测软件执行一些操作
在这种情况下,光收集错误是没有用的。必须要有接下来的步骤去处理想关操作,而不是vbscript得on error.
还有一些情况比如用某个对象的属性存在与否,是否等于某个值。这种情况下很可能vbscript是收集不到错误的。

总之on error只是一种接收和容纳错误的方法,其中一种而已,yabest给他总结出来了。。


原帖由 vaguely 于 2007-9-13 17:52 发表
"如果自己编写容错和错误收集"

那样的话,要写多少呢?严格的话,每一个步骤都要写。
我反正觉得太累了。

Yabest的方法,不用提前写任何的错误预判。
却可以捕捉到任何的错误,以及信息。还有错误发生的 ...

[ 本帖最后由 jackymail 于 2007-9-13 18:07 编辑 ]
回复 支持 反对

使用道具 举报

该用户从未签到

34#
发表于 2007-9-13 18:01:30 | 只看该作者
咸鱼不在线,估计下班了。。。
回复 支持 反对

使用道具 举报

该用户从未签到

35#
发表于 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 编辑 ]
回复 支持 反对

使用道具 举报

该用户从未签到

36#
 楼主| 发表于 2007-9-13 18:24:02 | 只看该作者
yabest ,能把我加到你的msn么?谢谢
我刚给你发了邀请. 我保证,平时不汇总打扰你的
回复 支持 反对

使用道具 举报

该用户从未签到

37#
发表于 2007-9-13 18:39:21 | 只看该作者
on error只控制紧邻他的那个语句或者函数,不管其它的
如果控制2个function就要2个on error

原帖由 yabest 于 2007-9-13 18:11 发表
刚实验了一下,都晕了,好像还更复杂!好像多了一条规律!

On Error Resume Next/On Error goto 0范围内调用的子孙函数,都自动变成Stop Run模式了!!!

我们主控Test本来就是Stop Run模式,所以没受影响 ...
回复 支持 反对

使用道具 举报

  • TA的每日心情
    开心
    2016-2-27 08:48
  • 签到天数: 2 天

    连续签到: 1 天

    [LV.1]测试小兵

    38#
    发表于 2007-9-13 23:26:56 | 只看该作者
    好久没有见到这么深入的讨论了,非常感谢楼主 vaguely 的不断提问,更要感谢yabest 和jackymail 的细致、专业、负责的回复。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    39#
     楼主| 发表于 2007-9-14 09:50:31 | 只看该作者
    谢谢斑竹对我的表扬,有点小骄傲现在sdlkfj6
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    40#
    发表于 2007-9-14 12:02:47 | 只看该作者
    这帖子非顶不可,学习到不少东西,特别是错误处理策略。送朵花表示感谢。
    yabest研究的很深入,是我的偶像。
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-11-26 04:33 , Processed in 0.084072 second(s), 21 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表