51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 4340|回复: 16
打印 上一主题 下一主题

[原创] QTP如何控制出错时执行下一条测试数据

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2011-7-8 14:37:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我们的脚本使用了框架,用testda驱动数据,用for循环控制,从第一条开始执行,执行后再执行第二条测试数据,即需要实现:当执行第一调测试数据的过程中有遇到fail步骤的话就退出,直接开始第二条测试数据的执行,请问该怎么用QTP控制,之前我们写成当遇到Fail就退出整个脚本,但如果这样的话,下面未执行侧测试数据是测试不到,请各位大侠赐教,谢谢!
序号测试目的服务号码
数据说明  
AA验证第一个号码13800000000
AA验证第二个号码13900000000
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
发表于 2011-7-8 14:48:48 | 只看该作者
on error resume  next
回复 支持 反对

使用道具 举报

该用户从未签到

3#
 楼主| 发表于 2011-7-8 15:37:56 | 只看该作者
本帖最后由 拍子 于 2011-7-8 15:43 编辑

回复 2# 云层
你好,你好像没看明白我的意思,这个是会使程序按照产生错误的语句之后的语句继续执行,我的意思是第一条测试数据没有执行完所以步骤就报错,就直接进入第二条测试数据执行
回复 支持 反对

使用道具 举报

  • TA的每日心情
    开心
    2018-7-13 14:04
  • 签到天数: 6 天

    连续签到: 1 天

    [LV.2]测试排长

    4#
    发表于 2011-7-8 15:56:20 | 只看该作者

    1. rowcount = DataTable.getRowCount
    2. for i = 0 to rowcount -1
    3.     sno = DataTable.rawValue("服务号码","Global")
    4.      '//操作
    5.    DataTable.SetNextRow
    6. next

    复制代码
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    5#
    发表于 2011-7-8 16:04:20 | 只看该作者
    sno = DataTable.rawValue("服务号码","Global")
    楼上的这句代码中的sno是什么意思啊?是VBS内置函数?
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    6#
    发表于 2011-7-8 16:50:26 | 只看该作者
    没看明白。。他乱贴的吧
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    7#
    发表于 2011-7-8 16:51:53 | 只看该作者
    其实这根本不用写函数或是怎样,QTP设置一下就好了
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    8#
    发表于 2011-7-8 16:54:04 | 只看该作者
    我看了下,Test Settings-->When error occurs during session:
    选择rocced to next iteration

    应该可以达到你想要的目的
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    9#
    发表于 2011-7-8 17:29:17 | 只看该作者
    如果出现fail,就退出ExitTestIteration()
    用这个试试看
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    10#
    发表于 2011-7-8 17:48:39 | 只看该作者
    楼上这个办法做判断点可以,但不太好作为全局变量吧
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    11#
     楼主| 发表于 2011-7-11 00:44:13 | 只看该作者
    回复 5# tankxu
    这句话应该是把服务号码一列的值赋给变量sno,我们的脚本是这样实现了:cusNO = DataTable("服务号码", caseName)
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    12#
     楼主| 发表于 2011-7-11 00:46:58 | 只看该作者
    回复 8# 阳光下的橙子
    --不过这个fail是我么自己定义的,并不是QTP执行中的出错。不知道这样可否行
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    13#
    发表于 2011-7-11 10:57:54 | 只看该作者
    回复 12# 拍子


        个人觉得可以在你的预期结果中找个检查点进行判断、如果跟你的检查点不相符。那应该就是你们定义的错误了。然后再执行下一个用例。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    14#
    发表于 2011-7-11 13:49:11 | 只看该作者
    回复 12# 拍子


        这个是你们自己脚本定义的变量,当然不能照搬给他们啦
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    15#
    发表于 2011-7-12 12:04:28 | 只看该作者
    定义个Sub或者Function,出错了就退出。
    在4楼提供的for循环里调用这个函数
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    16#
    发表于 2011-7-12 12:10:45 | 只看该作者
    回复 15# fzhang_uud


    PackageNum = DataTable.GetRowCount
    SoftVersion =  DataTable.GetSheet ("Global").GetParameter(3)
    SoftVersion = "***" & SoftVersion &"***" &Now&"****"
    Call WriteFile(FilePath,SoftVersion)
    For j = 1 to PackageNum
                    DataTable.SetCurrentRow(j)
                    ProductLine = DataTable.GetSheet ("Global").GetParameter(1)
                    PackageCode = DataTable.GetSheet ("Global").GetParameter(2)




                    ''模拟鼠标点击启动CB
                    Set objQTPwin=GetObject("","QuickTest.Application")
                    objQTPwin.WindowState="Minimized"
                    'Set objQTPwin = Nothing
                   
                   
                    Set Devicereplay = CreateObject("Mercury.DeviceReplay")
                    Devicereplay.MouseDblClick 36,18,0
                   
                    Call Logon()
                    Wait 6

            '获取登陆的SPID
            sql = "select SID from d_loginInfo where userid = '" & UserID & "' order by logindate desc"
            Query.Open sql,Cnn
            Query.MoveFirst
            UserSPID =         Query(0)       
            Query.Close

                    Window("UniSTAR CBuilder").Activate
                    Window("UniSTAR CBuilder").WinMenu("Menu").Select "数据包;数据发布"
                    Wait 2

                    '勾选要发布的数据包
                    With Window("UniSTAR CBuilder").Window("Packet Release")
                            .WinObject("CFGDataVersion").Click 27,28
                            .WinObject("Price").Click 25,31
                            .WinObject("PublicPackage").Click 27,13
                    End With
                   

                    Call PackageRelease()


        PID = Window("UniSTAR CBuilder").GetROProperty("process id")
            SystemUtil.CloseProcessById (PID)

    Next
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    17#
    发表于 2011-7-14 10:18:01 | 只看该作者
    如果你正在求职
    如果你从事自动化测试工作
    如果你能够搭建自动化测试框架

    外企职位等你来
    加qq:1483620344  咨询
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

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

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

    GMT+8, 2024-11-15 01:59 , Processed in 0.095632 second(s), 27 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

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