51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 5791|回复: 15
打印 上一主题 下一主题

[原创] 尝试封装一些经常要用到的制程序和函数,抛砖引玉:

[复制链接]
  • TA的每日心情
    奋斗
    2022-7-13 15:22
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    跳转到指定楼层
    1#
    发表于 2007-5-24 16:52:05 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    尝试封装一些经常要用到的制程序和函数:
    1. 创建一个vbs文件:TestVbs.vbs
    内容如下:
    '##################################################################################
    '##################################################################################
    Sub CloseWeb()

    '         此处可以用到描述性编程,把先期打开的IE窗口全关闭
    Dim WinIe,Ie,i,m
    Set WinIe=description.Create()
    WinIe("regexpwndtitle").value=" Microsoft Internet Explorer"  '所有页面的regexpwndtitle属性值都是" Microsoft Internet Explorer",也可以用其他属性
    Set Ie=desktop.ChildObjects(WinIe)
    m=Ie.count
    For i=1 to m
            Ie(i-1).close                 ' 0为最后打开的一个,可关闭打开的几个,,循环改成for i=1 to m
    Next
    End Sub
    '##################################################################################



    function TestVbs(format)
            msgbox "参数是" & format
    end function


    '#################################################################
    '#################################################################
    '往文件里面写内容
    '第一个参数 文件的路径
    '第二个参数:写入的内容
    '第三个参数:写入的格式("Appending/Writing")
    ' See also "FileSystemObject"
    Sub Write2File(FilePath,content,style)
       Dim fso,f
       Dim stl
            If Ucase(style)="APPENDING" Then
                    stl=8
            else
                    if Ucase(style)="WRITING" then
                                    stl=2
                    else
                                            reporter.ReportEvent 1,"参数错误","Writing <" & FilePath &">:<"& content &">With<" & style & ">"
                                    Exit Sub
                    end if
            End If  
       Set fso=CreateObject("Scripting.FileSystemObject")
       Set f=fso.OpenTextFile(FilePath,stl,true)
       'content="写入的第一行内容"
       f.WriteLine(content)
       f.Close
       Set f=nothing
       Set fso=nothing

    End Sub
    '#################################################################




    '#################################################################
    '#################################################################
    ' 连接数据库子程序
    ' 第一个参数:根据数据库的类型,设计连接字符串(参见udl文件)
    ' 第二个参数:连接数据库之后,进行查询的相应语句
    ' 第三个参数:查询记录返回到res
    Sub OpenDB(conn,sql,res)
       Set cnn=CreateObject("adodb.connection")
       cnn.open conn
       Set res=CreateObject("adodb.recordset")
       res.open sql,cnn,1,1
       
    End Sub
    '#################################################################




    '#################################################################
    '#################################################################
    ' 关闭数据库的连接
    sub CloseDB
       Set res=nothing
            Set cnn=nothing
    end sub
    '#################################################################

    2. QTP导入这个TestVbs.vbs 文件:
    菜单:Test-->Setting-->Resource
    在“Associated Library Files” 添加入该文件
    这里建议可以使用 相对路径,如..\TestVbs.vbs

    3. 测试封装的子程序:
    用“Run from steps”运行模式(专家视图 右键,第四个菜单项,脚本从光标处运行)
    在QTP 中添加测试代码:

    CloseWeb()    '实现关闭当前所有的IE窗口
    stop


    ' 调用外部函数 Write2File
    Write2File "c:\File.txt","Writhing a Line","Writing"
    Write2File "c:\File.txt","Appending a Line","Appending"
    Write2File "c:\File.txt","Appending a Line","Appending!"   ' 参数不正确
    Write2File ".\vbs\File.txt","Appending a Line","Appending"
    stop


    '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    ' 设置连接数据库所需要的初始值,包括:
    ' conn :数据库连接字符串
    ' sql:查询的SQL语句
    ' res:查询的返回记录

    Dim conn,sql,res
    conn="Provider=MSDASQL.1;Persist Security Info=False;Data Source=QT_Flight32"
    sql="select * from Orders"
    Set res=nothing

    ' 调用外部子程序 OpenDB 进行连接数据库
            OpenDB conn,sql,res
                    'msgbox res.RecordCount&"行," & res.fields.count & "列"
                    res.MoveFirst
               ' res.MoveNext    没有它的话,记录就成了死循环
              
                    'reporter.ReportEvent 2,"测试连接数据库","数据库获取数据:" & res.fields(0)

            RowCount=res.RecordCount
            ColumnCount=res.fields.count
            While not res.eof
                    Record=""
                    For i=0 to ColumnCount-1
                            Record=Record & ":" &res.fields(i)
                    Next
                            Record=mid(Record,2)
                            reporter.ReportEvent 2,"数据库记录:",Record
                    res.MoveNext
            Wend
      
    ' 调用外部子程序 CloseDB关闭数据库
            CloseDB
    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

    该用户从未签到

    2#
    发表于 2007-5-24 17:08:35 | 只看该作者
    嗯,平时用的到的
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2022-7-13 15:22
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    3#
     楼主| 发表于 2007-5-25 10:55:53 | 只看该作者
    自己顶
    回复 支持 反对

    使用道具 举报

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

    连续签到: 1 天

    [LV.1]测试小兵

    4#
    发表于 2007-6-11 09:08:43 | 只看该作者
    不错,值得学习,偶就把它放在 [QTP精华区] 了。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    5#
    发表于 2007-6-11 09:44:43 | 只看该作者
    太好了,十分感谢
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2022-7-13 15:22
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    6#
     楼主| 发表于 2007-6-11 10:27:25 | 只看该作者
    发这一帖的初衷还是希望大家能够根据现实中使用QTP的经验,把经常能够用的到的功能,封装成sub/function 有一个大家互相交流和互相学习的平台。
    希望捧场!!!
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    7#
    发表于 2007-6-11 10:34:57 | 只看该作者
    写得不错。感谢lz
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    8#
    发表于 2007-6-13 13:38:35 | 只看该作者
    第一个例子怎么用?
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2022-7-13 15:22
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    9#
     楼主| 发表于 2007-6-13 14:04:21 | 只看该作者

    回复 #8 E22E 的帖子

    CloseWeb()    '实现关闭当前所有的IE窗口
    一般放在所有的代码之前。

    回放的时候,预先关闭所有打开的IE窗口,然后才开始

    [ 本帖最后由 rivermen 于 2007-6-13 14:20 编辑 ]
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    10#
    发表于 2007-6-13 17:48:17 | 只看该作者
    very good
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    11#
    发表于 2007-6-14 02:44:26 | 只看该作者

    来捧场了

    进步很大嘛~是你工作中用到,还是你自己不断摸索?
    很希望和你成为同事额闹,不过我现在刚刚加班到家^_^不知道你还愿意否?
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    12#
    发表于 2007-7-5 16:47:36 | 只看该作者
    哎呀,谢谢楼主了
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    13#
    发表于 2008-4-11 11:42:43 | 只看该作者
    感谢,要好好学习下
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    14#
    发表于 2008-4-14 09:56:10 | 只看该作者
    good.受用了
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    15#
    发表于 2009-4-12 10:46:35 | 只看该作者
    还不错!支持一个! 希望有更多的共享 呵呵^_^
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    16#
    发表于 2009-6-3 10:47:55 | 只看该作者
    很不错嘛. 学习了之后,就是找不到很好的练兵场哦. hehe
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

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

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

    GMT+8, 2024-11-14 12:45 , Processed in 0.086484 second(s), 28 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

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