google搜索 51Testing站内搜索                    软件测试门户 | 软件测试培 训 | 文章资料精选 | 软件测试论坛 | 软件测试博客 | 测试招聘求职 
打印

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

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


尝试封装一些经常要用到的制程序和函数:
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

TOP

嗯,平时用的到的

TOP

自己顶

TOP

不错,值得学习,偶就把它放在 [QTP精华区] 了。
实践是检验真理的唯一标准。

TOP

太好了,十分感谢

TOP

发这一帖的初衷还是希望大家能够根据现实中使用QTP的经验,把经常能够用的到的功能,封装成sub/function 有一个大家互相交流和互相学习的平台。
希望捧场!!!

TOP

写得不错。感谢lz
学如逆水行舟,不进则退.

TOP

第一个例子怎么用?

TOP

回复 #8 E22E 的帖子


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

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

[ 本帖最后由 rivermen 于 2007-6-13 14:20 编辑 ]

TOP

very good

TOP

来捧场了


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

TOP

哎呀,谢谢楼主了

TOP

感谢,要好好学习下
实践出真知!

TOP

good.受用了
实践出真知!

TOP

 
当前时区 GMT+8, 现在时间是 2008-10-12 11:31Copyright(C)上海博为峰软件技术有限公司 2001-2007 电话:021-64471599-8017
当您在访问网站、论坛及博客过程中遇到问题时可发送email:webmaster@51testing.com或发送论坛短信至管理员风在吹