51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 2575|回复: 3
打印 上一主题 下一主题

[原创] QTP脚本高手帮看看如何更简化,谢谢

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2010-7-9 17:19:26 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
'=========================================================================
                                  '脚本功能:功能自动化测试脚本

                '测试对象:XXXX                            被测版本:V1.5

                '编写日期:2010-5-20                    编写人:XXX

                '修改日期:    2010-5-26                   修改人:XXX

                '备注:目前脚本覆盖的功能有限,需要后继深入开发
'========================================================================

Option explicit    '只能显式的定义变量

On Error Resume Next    '遇到系统错误继续执行脚本

executefile "D:\qtp_control.VBS"   '如果移植代码到其他机器运行 需要将对象库同此文件一起拷贝路径与此代码相同,或使用环境变量进行配置

Dim intRuntimes,objDialog,objSystemdia,strText ,strChecked,objSystemdia_1,stra,objarray(),wshshell,strreg(3)  '  定义测试过程中所需要的变量

Dim  fso, fso_1,objqtpwin,objFile                  ' 文件系统操作相关变量

Dim rega,regb,regc                           '正则表达式相关变量

Dim  objDescr,objChild,Counter   '收集对象的相关变量

Dim  objCollection,Counter_1         '收集对象属性集合的相关变量

Dim  intDevnumber,strDevValue        '设备列表相关变量

Set wshshell=createobject("wscript.shell") '创建WSH相关对象

Set fso=createobject("scripting.filesystemobject") '创建文件系统对象

Set fso_1=fso.CreateTextFile("d:\注册表测试结果.txt")    '此处需要修改为更改后的程序可执行文件的绝对路径

                                                                                                                  'data table 的相关操作

'===================将常用对象赋值给变量,用变量代替============

Set objDialog=Dialog("xxxxx")   

Set objSystemdia_1=objDialog

Set objSystemdia=objDialog.Dialog("XXXXX")

'==================================================================

SystemUtil.Run "C:\Program Files\xxxx","xxx","","xxx"   '程序运行命令:如果程序的安装路径改变了,

If   Dialog("xxxxx").WinComboBox("设备列表:").GetItemsCount=0 Then         '判断设备列表中设备数

    call  QTP_Small()

        Function   Count_int()

             Dim intCount

                         intCount=0

Call QTP_Big()

   'exittestiteration         '用于推出当前测试脚本的执行

                For intRuntimes=2 to 6 step 2                                                                          
               
                        If   intRuntimes=4 Then
               
                                 objDialog.WinButton("在线升级").Click
                                 objDialog.WinButton("在线升级").WaitProperty  "visible","true",10000
                                 objDialog.WinButton("系统选项").Click

                             Set objDescr=Description.Create()            '创建description对象,作为对象的属性集合

                                 objDescr("Class Name").value="WinCheckBox"

                                 Set objChild=dialog("xxxxx").Dialog("系统选项").ChildObjects(objDescr)  '返回符合属性集合的对象

                If   objChild.Count=2 Then            '判断对象个数是否与预期一致

                                        reporter.ReportEvent micPass,"复选框个数预期相符", "共有复选框"& objChild.Count &"个"

                                else

                                   reporter.ReportEvent micFail, "复选框个数与预期不符","预期复选框2个"&vbcrlf&"实际复选框个数"& objChild.Count &"个"
  
                                End If

                                For  Counter=0 to objChild.Count-1

                                        objChild(Counter).set "OFF"

                                Next

                                Set objCollection=dialog("xxxxx").Dialog("系统选项").WinCheckBox("XXXXX").GetTOProperties   '获得此对象的描述属性

                 For  Counter_1=0 to objCollection.count-1

                                         reporter.ReportEvent micPass,"此对象属性"&(Counter_1+1),"属性名:"& objCollection( Counter_1).name&vbcrlf&"属性值:"& objCollection( Counter_1).value         '想测试报告中输出每一个描述属性的名字和值

                                 Next

                wait 3

                                Set objCollection=nothing
                                Set objChild=nothing             '释放与变量所引用的对象相关联的内存和系统资源
                                Set objDescr=nothing

                                 If    objSystemdia.WinCheckBox("XXX").Exist Then          '判断”XXXXX“复选框是否存在
                               
                                        strChecked=objSystemdia.WinCheckBox("XXXXX").GetROProperty("checked")  '”XXXXX“复选框的checked值赋值给变量
               
                                        If  strChecked="OFF" Then   '判断”XXXXX“复选框是否被选中
               
                                                objSystemdia.WinCheckBox("XXXX").Set"ON"
               
                                        End If
               
                                 else
               
                                                intCount=intCount+1
               
                                  end if
               
                                   If    objSystemdia.WinCheckBox("XXXX").Exist then             ' 判断此窗口是否存在
               
                                                objSystemdia.WinCheckBox("XXXX").Set "ON"
               
                                        else
               
                                                  intCount=intCount+1
               
                                        end if

                                                 objSystemdia.WinButton("确定").Click
               
                        end if
               
                        If intRuntimes=2Then

                                        If    objDialog.WinButton("系统选项").Check(CheckPoint("系统选项_2"))  then

                                                wait 3

                                                With dialog("xxxxx")

                                               .WinButton("系统选项").Click

                                                End With
                               
                                        else

                                                msgbox "系统选项文本内容不正确",48,"系统提示"

                                        End If
               
                                        strText= objSystemdia.WinCheckBox("XXXX").GetROProperty("text")

[ 本帖最后由 wangxin1618 于 2010-7-9 17:24 编辑 ]
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
 楼主| 发表于 2010-7-9 17:20:18 | 只看该作者

后继脚本

If strText="XXXXX" Then         '=====假定一个其他的预期结果与运行时的程序进行比较,此做法目的为验证脚本中的计数器是否正常计数=====
               
                                                 objSystemdia.WinCheckBox("XXXXX").Set "OFF"
               
                                 else  

                                                Reporter.ReportEvent micFail,      "文本错误",      "此处文本与实际不符"&vbcrlf&"预期文本为:XXXXX"
                                                intCount=intCount+1

                                                ReDim Preserve objarray(intCount-1)
                                                objarray(intCount-1)=objSystemdia.WinCheckBox("XXXXX").GetROProperty("text")     '将出错对象的对象名赋值给变量

               
                                 End If
               
                                         objSystemdia.WinButton("确定").Click

                                         objDialog.WinButton("系统选项").Click
               
                                         If objSystemdia.WinCheckBox("XXXX").Exist then
               
                                                                strChecked=objSystemdia.WinCheckBox("XXXXX").GetROProperty("checked")   '获得运行时对象的属性值
                                                                               
                                                        If  strChecked="OFF" Then
               
                                                                 objSystemdia.WinCheckBox("XXXXX").Set "ON"
               
                                                         end if
               
                                                End If

                                                 objSystemdia.WinButton("确定").Click
               
                        End If
               
                        If  intRuntimes=6 Then
                       
                                 If objDialog.WinButton("在线升级").Exist and objDialog.WinButton("系统选项").Exist  then    '判断“在线升级“和”系统选项“按钮是否存在
               
                                         objDialog.WinButton("在线升级").Click
                                         objDialog.WinButton("系统选项").Click
                                         objSystemdia.WinCheckBox("XXXXX").Set"ON"

                                         If   objSystemdia.WinCheckBox("XXXXX").CheckProperty("checked","ON")  Then
                                       
                                                 objSystemdia.WinButton("确定").Click

                                        else

                                            msgbox "复选框没有被选中",48,"错误提示"

                                          End If
               
                                 end if
               
                         End If
               
                Next

                 objDialog.WinButton("关闭").Click
                 
                Count_int=intCount   '函数返回值

End Function

                strreg(0)=wshshell.RegRead("XXXXXXX")    ' 提取注册表键值信息
                strreg(1)=wshshell.RegRead("XXXXXXXX")
                strreg(2)=wshshell.RegRead("XXXXXX")
                strreg(3)=wshshell.RegRead("XXXXXX")

                regb="XXXXXXX"  '正则表达式模板

            Set  rega=new Regexp

                rega.Pattern=regb
                rega.IgnoreCase=True
                rega.Global=True

        regc= rega.test(strreg(1))   

           If   regc Then

         reporter.ReportEvent micPass,"注册表格式","注册表键值符合正则表达式格式要求"

           else

             reporter.ReportEvent micFail,"注册表格式出错","注册表格式与预期格式不符,请检查"

           End If

        if    strreg(3) ="XXXX"  and strreg(2)=123  and strreg(1)="XXXXXXl" and strreg(0)="XXXXXXXl"Then

                'msgbox "被测注册表键值:"&vbcrlf&vbcrlf& join(strreg,vbcrlf&vbcrlf),64,"系统提示"

                           fso_1.Write("注册表键值与预期一致为:"&vbcrlf&vbcrlf&join(strreg,vbcrlf&vbcrlf)&vbcrlf&vbcrlf&"读取时间:"&now)
                           fso_1.Close

                  else

                                fso_1.Write("===注册表键值与预期不符==="&vbcrlf&vbcrlf&"实际注册表键值:"&vbcrlf&vbcrlf&join(strreg,vbcrlf&vbcrlf)&vbcrlf&vbcrlf&"读取时间:"&now)
                                fso_1.Close
                                Reporter.ReportEvent micFail,      "注册表出错",      "注册表键值与实际不符"

           End If

  If   objSystemdia_1 is objDialog Then

        Dim intCount
       
         intCount=Count_int()
       
         If intCount =0 Then                'intCount为计数器变量

                        'msgbox "本次测试结果:程序运行符合预期要求",64,"-系统提示-"
                        wshshell.Popup  "本次测试结果:程序运行符合预期要求",3,"-系统提示-"
       
        else
       
                        'msgbox "★出现缺陷次数是:"&"("&intCount&")"&"次★"&vbcrlf&vbcrlf&"出错对象:"&vbcrlf&vbcrlf&join( objarray,vbcrlf&vbcrlf)&vbcrlf&vbcrlf&"★请分析测试报告查找错误★",48,"-程序出现缺陷-"
                        wshshell.Popup  "★出现缺陷次数是:"&"("&intCount&")"&"次★"&vbcrlf&vbcrlf&"出错对象:"&vbcrlf&vbcrlf&join( objarray,vbcrlf&vbcrlf)&vbcrlf&vbcrlf&"★请分析测试报告查找错误★",3,"-程序出现缺陷-"

         End If                                                                                                                                                                             '▲输出出错对象的基本属性:名称
         
End If

        wshshell.Run "d:\注册表测试结果.txt"


else

        set objFile=fso.CreateTextFile("d:\dev_list.txt")

        For  intDevnumber=0 to (Dialog("xxxxx").WinComboBox("设备列表:").GetItemsCount-1)

                        strDevValue=Dialog("xxxxx").WinComboBox("设备列表:").GetItem(intDevnumber)
                        objFile.Write(strDevValue&vbcrlf)

Next

                        Dialog("xxxxx").Close
                        objFile.Close
                    wshshell.Run "d:\dev_list.txt"

end if

Set  fso_1=nothing

Set  wshshell=nothing

Set  objDialog=nothing        '释放与变量所引用的对象相关联的内存和系统资源

set  objSystemdia=nothing

Set  objSystemdia_1=nothing

Set  fso=nothing

Set objFile=nothing
回复 支持 反对

使用道具 举报

该用户从未签到

3#
发表于 2010-7-29 13:39:30 | 只看该作者

简化就看自己的提炼了

大致看了脚本,很多可以提炼公共方法什么的,至于具体逻辑只有楼主自己知道了。
回复 支持 反对

使用道具 举报

该用户从未签到

4#
发表于 2010-7-29 14:51:46 | 只看该作者
基本是挺简化的了,一般能简化到避免冗余就可以了,格式清晰啊什么的,在编写脚本的时候多用用WITH也是件简化的事情
回复 支持 反对

使用道具 举报

本版积分规则

关闭

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

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

GMT+8, 2024-11-27 11:05 , Processed in 0.080418 second(s), 32 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

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