51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 17399|回复: 64
打印 上一主题 下一主题

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

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2007-9-12 18:51:57 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
下面这段话是Yabest曾经说过的
我们的框架,因为要捕捉错误和控制错误,所以错误模式设置成了遇错返回。
然后将Case脚本写在函数里,外层主控用如下方法来控制Case函数的运行。
这样某个Case执行失败了,不会影响下一个Case的运行。

On Error Resume Next
  CaseFunctionName
On Error goto 0


现在我也相应用这个方法到我的测试框架中(其实我一直在学习yabestsdlkfj6 )

现在我的问题是,如果遇到错误,就从调用的CaseFunctionName退出来返回到
主控函数,主控函数如何知道错误发生在被调用的CaseFunctionName中具体哪一步呢?
谢谢!

比如

Public Function CaseCreate()
*****
**出错在这步***  当然错误是随即发生的。也肯定在别的语句处
*****
******

Function End

[ 本帖最后由 vaguely 于 2007-9-13 10:36 编辑 ]
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

65#
发表于 2010-12-17 11:41:00 | 只看该作者
回复 20# jackymail


    我公司2010年6月份刚在纳斯达克上市,现在要找一名自动化测试组长,薪资福利良好:

我们项目组需要招聘自动化测试组组长,职位信息如下:
1.计算机相关专业本科以上学历,熟悉软件工程师学原理;
2.软件测试相关经验3年以上,其中至少包括2年功能自动化测试经验;
3.熟悉QTP工具的使用,了解QTP原理和对象识别机制;
4.熟悉VBScript脚本语言,能进行相关自动化脚本函数的编写;
5.较强的语言表达和文档编写能力及良好的沟通技巧;
6.有金融银行基础业务知识经验、有网银业务经验为佳;
7.有自动化框架编写、设计经验和软件开发经验有团队管理经验为佳;
8.熟悉Java、J2EE 、WebSphere 、Application Serve、DB2、Oracle等为佳
9.有Unix平台的使用经验(AIX/Solaris/HPUX/Linux)为佳;
欢迎各专业人士来信探讨,谢谢:
shanjing1983@163.com
sophiashan07@hotmail.com
回复 支持 反对

使用道具 举报

该用户从未签到

64#
发表于 2010-11-10 15:41:39 | 只看该作者
开始有这种思想了。。
回复 支持 反对

使用道具 举报

该用户从未签到

63#
发表于 2010-11-2 14:28:37 | 只看该作者
好贴,学习啦!
回复 支持 反对

使用道具 举报

该用户从未签到

62#
发表于 2010-9-20 14:36:49 | 只看该作者
学习
回复 支持 反对

使用道具 举报

该用户从未签到

61#
发表于 2010-2-20 11:49:41 | 只看该作者
::2ku:::
回复 支持 反对

使用道具 举报

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

    连续签到: 1 天

    [LV.1]测试小兵

    60#
    发表于 2009-4-19 20:36:49 | 只看该作者
    此帖对QTP出错处理讨论地非常深入,值得仔细研究和学习。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    59#
    发表于 2008-10-31 17:51:30 | 只看该作者
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    58#
    发表于 2008-10-30 15:04:58 | 只看该作者
    看了看,绝对经典。楼主,谢谢你
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    57#
    发表于 2008-8-29 14:22:46 | 只看该作者
    Resource->Libraries加载的vbs执行时的错误是无法返回主控的action,只要executefile的才可以
    通常的做法是动态加载
    executefile filename
    execute "call "& functionname
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    56#
    发表于 2008-8-29 13:38:15 | 只看该作者
    好贴,顶起
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    55#
    发表于 2007-10-12 16:53:09 | 只看该作者
    原帖由 ppent 于 2007-10-11 16:25 发表

    奇怪了,在我的脚本中,只有当前Test的function call才能正确的处理错误,如果放到VBS中就直接停止了。Test Settings的错误处理是stop run。
    yabest,是否还有其他地方需要设置?


    呵呵,我试了一下,用Resource->Libraries来加载vbs文件,好像有这个问题!

    不过我的框架是通用的,所以是用Executefile方法来动态加载vbs文件的,可以正常捕获错误信息,没有问题。
    你也可以试试用Executefile方法来加载!
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    54#
    发表于 2007-10-11 17:22:30 | 只看该作者
    这两周一直在找这篇帖子没找到,现在总算发现了,这么好的帖子不可不顶,收藏+学习~
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    53#
    发表于 2007-10-11 17:22:19 | 只看该作者
    QTP自带的Recovery Scenario其实就是很好的错误处理的方式,可以自己写一个错误处理函数,出错由场景判断.

    我现在的函数是出错则重复当前操作,连续出错5次stop Test.(因为会有些希望忽略的错误,由别的场景来进行处理,此时这个地方会记录一个错误,处理不及时或许2到3个错误)
    日志里记录出错的对象,出错描述,出错对象的参数.
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    52#
    发表于 2007-10-11 16:31:57 | 只看该作者
    我的脚本
    '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
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    51#
    发表于 2007-10-11 16:25:51 | 只看该作者
    原帖由 yabest 于 2007-10-11 15:39 发表


    怎么叫错误控制处理无效呢?函数不管是放在vbs文件里,还是放在action里,通过On Error Resume Next/On Error goto 0方式调用函数,主控Test都可以捕获函数里发生的错误的!

    奇怪了,在我的脚本中,只有当前Test的function call才能正确的处理错误,如果放到VBS中就直接停止了。Test Settings的错误处理是stop run。
    yabest,是否还有其他地方需要设置?
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    50#
    发表于 2007-10-11 16:21:48 | 只看该作者
    恢复场景有很大的局限性,只能对特定对象的错误操作,如我的项目一般错误会弹出对话框,就是用它处理的。。

    用所讨论的On error resume next的办法我把函数放在vbs里调用时就不管用了,只能在同一个test 里可用。不知道是不是我的某些设置的问题。
    我把一般的出错设置是pop up message box。。。调用时就直接弹出了出错框
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    49#
    发表于 2007-10-11 15:42:46 | 只看该作者
    原帖由 木卫十二 于 2007-10-11 14:31 发表
    嗯,跟楼上有相似的问题。。
    我的错误处理是用Recovery Scenario调用处理错误的Function来进行的,也有一些缺陷。
    正琢磨着更好的办法。。。


    其实出错后首要的是报告错误原因,恢复处理可以在外层处理。
    没有用过Recovery Scenario,但是不知道Recovery Scenario方式能报告发生错误的错误原因吗?
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    48#
    发表于 2007-10-11 15:39:44 | 只看该作者
    原帖由 ppent 于 2007-10-11 11:59 发表
    ...
    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都可以捕获函数里发生的错误的!
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    47#
    发表于 2007-10-11 14:31:20 | 只看该作者
    嗯,跟楼上有相似的问题。。
    我的错误处理是用Recovery Scenario调用处理错误的Function来进行的,也有一些缺陷。
    正琢磨着更好的办法。。。
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

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

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

    GMT+8, 2024-11-13 21:24 , Processed in 0.080715 second(s), 28 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

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