51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 2667|回复: 9
打印 上一主题 下一主题

[求助] QTP自动化测试技术领航

[复制链接]
  • TA的每日心情
    奋斗
    2015-3-30 15:24
  • 签到天数: 3 天

    连续签到: 1 天

    [LV.2]测试排长

    跳转到指定楼层
    1#
    发表于 2013-8-21 16:52:51 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    本帖最后由 fsweicaixia 于 2013-8-21 16:56 编辑

    QTP自动化测试技术领航 第476页 脚本,有一句不明
    testobjectname = obj.GetToProperty("testObjName")
    testObjName是从何而来,是参数PropertyName吗?
    紧急问题

    '*******************************************************************
    '脚本目的:  实际值预期值相比较
    '创建日期:  2013.08.21~ 2013.08.21
    '创 建 人:  Anna
    '描述:函数整理
    '*******************************************************************
    '@Description Auto Log Generator
    'PropertyName obj属性
    'ExpectedValue 实际值
    Function ValidateProperty(obj,PropertyName,ExpectedValue)

            If  Cstr(obj.GetROProperty(PropertyName)) = Cstr(ExpectedValue) Then
                    '成功
                    On Error Resume Next
                    testobjectname = obj.GetToProperty("testObjName")
                    HReport ExpectedValue,obj.GetROProperty(PropertyName),True,"check" + testobjectname + "<" + PropertyName + ">property"
                    on error goto 0
                    ValidateProperty = True
                    Exit function
            Else
                    '失败
                    On Error Resume Next
                    testobjectname = obj.GetToProperty("testObjName")
                    HReport ExpectedValue,obj.GetROProperty(PropertyName),False,"check " + testobjectname + "<" + PropertyName + ">property"
                    on error goto 0
                    ValidateProperty = False
                    Exit function
            End If

    End Function
    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

  • TA的每日心情
    奋斗
    2014-12-18 10:31
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    2#
    发表于 2013-8-22 15:08:11 | 只看该作者
    本帖最后由 feiyunkai 于 2013-8-22 15:31 编辑

    obj.GetToProperty("testObjName")应该是obj.GetToProperty(PropertyName)

    个人对该函数的看法:
    1、函数中两个Exit function冗余:
    原因:ValidateProperty赋值语句执行完成后,该函数已经执行完成,会自动退出函数,后面加Exit function多余)
    2、on error goto 0
    原因:on error goto 0 的作用是关闭错误处理,而ValidateProperty函数中on error goto 0 后面执行一句赋值语句后整个Function就执行完成,函数执行完成后会自动关闭本函数中的错误处理,所以多余
    3、On error resume next冗余且位置不正确:
    原因:On error resume next放在If语句上方可以起到相同作用,且能捕获if语句中条件的异常信息。
    4、On error resume next未起到应有的作用:
    原因:当函数遇到异常时,应该将错误描述(err.description)打印到日志中,方便问题定位
    5、obj.GetROProperty(PropertyName)应该先赋值后比较
    原因:上面函数中比较时获取一次属性值,打印报告又获取一次,影响效率,所以应先保存属性值
    6、日志中没必要打印TO属性
    原因:TO中属性是对象被添加到对象库中时的属性,与运行时属性可能会不同,当前函数中只需要打印期望值和实际值就可以了,打印TO属性没有意义。
    7、建议:未判断需要获取属性的对象是否存在,若对象不存在则后面的比较将失去意义,所以建议先判断对象是否存在
    以下是修改后的函数(日志打印函数未写,以Print代替)
    Function ValidateProperty(obj,PropertyName,ExpectedValue)
        On Error Resume Next
            'Exist后可以根据需要设置超时时间,若不设置则为QTP默认超时时间
                    If obj.Exist Then
                            ActualValue=Cstr(obj.GetROProperty(PropertyName))
                                    If   ActualValue= Cstr(ExpectedValue) Then
                                            ValidateProperty = True
                                    Else
                                            ValidateProperty = False
                                    End If
                    else
                    '调用日志打印函数
                            print "对象不存在"
                    End If
                    '判断代码执行过程中是否有错,有错则打印日志,方便问题定位
                    If err.number<>0 Then
                            '调用日志打印函数
                            print "属性比较出错,错误描述为:【"& err.description &"】"
                    else
                            If ValidateProperty=True  Then
                                    '调用日志打印函数
                                    print "对象属性校验成功,期望值为 :【" & ExpectedValue & "】 实际值为:【" & ActualValue & "】"
                            elseif                                 
                                    '调用日志打印函数
                                    print "对象属性校验失败,期望值为 :【" & ExpectedValue & "】 实际值为:【" & ActualValue & "】"
                            End If
                    End If
    End Function

    评分

    参与人数 1综合技术指数 +2 收起 理由
    黑羽祭 + 2 详细啊~

    查看全部评分

    回复 支持 反对

    使用道具 举报

    该用户从未签到

    3#
    发表于 2013-8-22 17:23:06 | 只看该作者
    楼上的朋友意见非常好,非常感谢,第6条你误会了,testobjname不是普通的to属性,而是对象库中对象的关键字名称,是不会随着对象变的。这个在查错是非常有用的。呵呵。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2014-12-18 10:31
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    4#
    发表于 2013-8-23 12:15:36 | 只看该作者
    回复 3# zzxxbb112


    刚才试了下obj.GetToProperty("testObjName")是获取对象库中object properties中的name属性值,又学了一招,谢谢
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2015-3-30 15:24
  • 签到天数: 3 天

    连续签到: 1 天

    [LV.2]测试排长

    5#
     楼主| 发表于 2013-8-23 16:58:36 | 只看该作者
    回复 2# feiyunkai


        非常感谢,献出您宝贵的时间解释此问题,万分感谢!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    无聊
    2018-9-27 10:05
  • 签到天数: 36 天

    连续签到: 1 天

    [LV.5]测试团长

    6#
    发表于 2013-8-27 13:00:29 | 只看该作者
    知识贴~不错~
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    7#
    发表于 2013-9-2 10:28:32 | 只看该作者
    收益了,感谢
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    8#
    发表于 2013-9-3 12:20:23 | 只看该作者
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2015-3-30 15:24
  • 签到天数: 3 天

    连续签到: 1 天

    [LV.2]测试排长

    9#
     楼主| 发表于 2013-9-14 13:45:45 | 只看该作者
    testobjname 关于这个隐藏对象获取的值什么值,GetTOProperty, GetROProperty  三者能否详细解释解释
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2015-3-30 15:24
  • 签到天数: 3 天

    连续签到: 1 天

    [LV.2]测试排长

    10#
     楼主| 发表于 2013-9-14 13:53:53 | 只看该作者
    整理了一下脚本  

    Function ValidateProperty(obj,PropertyName,ExpectedValue)
            On Error Resume Next
            'Exist后可以根据需要设置超时时间,若不设置则为QTP默认超时时间

            If obj.Exist Then
                    ActualValue = Cstr(obj.GetROProperty(PropertyName))

                    If   ActualValue = Cstr(ExpectedValue) Then
                            ValidateProperty = True
                    Else
                            ValidateProperty = False
                    End If

            else
                    '调用日志打印函数
                    print "对象不存在"
            End If

            '判断代码执行过程中是否有错,有错则打印日志,方便问题定位

            If err.number <> 0 Then
                    '调用日志打印函数
                    print "属性比较出错,错误描述为:【" & err.description & "】"
            else

                    If ValidateProperty = True  Then
                            '调用日志打印函数
                            print "对象属性校验成功,期望值为 :【" & ExpectedValue & "】 实际值为:【" & ActualValue & "】"
                    elseif
                            '调用日志打印函数
                            print "对象属性校验失败,期望值为 :【" & ExpectedValue & "】 实际值为:【" & ActualValue & "】"
                    End If

            End If

    End Function
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

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

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

    GMT+8, 2024-11-9 00:44 , Processed in 0.077543 second(s), 28 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

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