51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 3159|回复: 8
打印 上一主题 下一主题

[原创] QTP定义和封装FUnction

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2010-3-31 23:04:56 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我想将我自己写的Function放在一个地方,让每个Action都能调用。
请问QTP有没有这样一个功能
请各位大侠给个例子
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
发表于 2010-4-1 09:43:30 | 只看该作者
有很多种方法。一般可以把函数库保存为vbs、qfl或者好像txt也可以的。
然后在File—Test Setting里面有个resources,加载你的函数库文件,这样就可以使用了。不过如果是不同的Test,那就需要再添加,反正保证你需要使用到函数库的那个Test一定要加载这个函数库文件。
另一个办法可以直接写语句,需要使用的地方就写一个。
ExcuteFile "D/fun.vbs"
这样也是可以的。
回复 支持 反对

使用道具 举报

该用户从未签到

3#
发表于 2010-4-1 09:46:46 | 只看该作者
第二种可以更灵活点,但是貌似第二种可以写相对路径吗?
回复 支持 反对

使用道具 举报

该用户从未签到

4#
发表于 2010-4-1 09:57:50 | 只看该作者

回复 3# 的帖子

好像不行的。要用绝对路径了。
我之前在客户那边是这样应用的,客户有测试执行机,和我们的办公电脑网络不通的,只能通过Terminal访问。后来为了方便大家使用,指定了一台机器设置了一个共享目录给大家。然后让大家通过添加网络驱动器的方式添加这个共享目录,并且统一命名,例如M盘。
这样以后大家需要用的相关函数库或者截图都放在那边了,比如函数库就可以这样写
ExcuteFile "M:/fum.vbs"
在任何地方执行案例都不会有问题,只要加了网络驱动器。
至于你想写相对路径,那案例执行的时候相对谁呢?总不能是QC吧,所以还是只能用绝对路径的。
回复 支持 反对

使用道具 举报

该用户从未签到

5#
发表于 2010-4-1 10:58:00 | 只看该作者
可以设置一个环境变量来存储路径,然后就可以使用相对路径了。
例如:
executefile environment("FilePath") & "\1212.vbs"

其中的FilePath是QTP中自定义设置的一个环境变量。
回复 支持 反对

使用道具 举报

该用户从未签到

6#
发表于 2010-4-1 11:10:46 | 只看该作者

回复 5# 的帖子

想法不错。不过那样不是多了一步么,你还要在每个Test Setting里设置环境变量。然后还是要在action里写executefile
回复 支持 反对

使用道具 举报

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

    连续签到: 1 天

    [LV.1]测试小兵

    7#
    发表于 2010-4-1 11:30:19 | 只看该作者
    如果项目文件路径不会改变的话,5#的方法的可以的,但是如果项目文件换了位置就又要重新设置环境变量,下面的代码可以实现不管项目文件的路径怎样改变,都可以使用相对路径(但如果项目的文件结构改变,该方法也就不可行了,不过改变项目的文件结构是没有什么意义的,一般都是预先设计好的)
    可以用设置默认文件夹的方法:

    set qtapp=createobject("QuickTest.application")
    qtapp.Folders.Add(mid(Environment("TestDir"),1,(InStrRev(Environment("TestDir"),"\",len(Environment("TestDir")))))) '将当前脚本的上级目录,设置为默认文件夹
    set qtapp=nothing
    '下面就可以用相对路径了
    ExecuteFile "FunctionLab.vbs"
    '注:以上代码是脚本文件和函数库文件在同一目录下的情况,若不在同一目录下则:
    '假设函数库文件路径为:..\project\FunctionLab\FunctionLab.vbs
    '脚本文件路径为:..\project\Script\脚本名称
    '则需要减去\Script\的长度,将脚本文件和函数库文件的上级目录设置为默认文件夹脚本如下:
    set qtapp=createobject("QuickTest.application")
    qtapp.Folders.Add(mid(Environment("TestDir"),1,(InStrRev(Environment("TestDir"),"\",len(Environment("TestDir")))-8))
    ) '将当前脚本的上一的上级目录,设置为默认文件夹
    set qtapp=nothing

    ExecuteFile "FunctionLab\FunctionLab.vbs"

    如果是单一的脚本,使用这个方法没什么意义,直接添加相对文件夹就可以了:tools,option,Folders,弊端和5#的弊端是一样的
    如果是自动化测试框架中使用,可以在驱动脚本中添加设置就可以了。例如:
    set qtapp=createobject("QuickTest.application")
    qtapp.launch
    qtapp.Folders.Add(Projectpath)
    set qtapp=nothing


    Public Function getProjectPath()
    Set objFSO = CreateObject("Scripting.FileSystemObject")                    '创建FSO对象
    Set objFile = objFSO.GetFile(wscript.scriptfullname)                       '获取文件的完整路径
    getProjectpath= objFSO.GetParentFolderName(objFile)                        '获取上一级文件夹路径
    Set objFile = Nothing
    Set objFSO = Nothing
    End Function

    [ 本帖最后由 feiyunkai 于 2010-4-1 11:57 编辑 ]
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    8#
     楼主| 发表于 2010-4-1 12:10:45 | 只看该作者
    谢谢大家的指点 呵呵
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    9#
    发表于 2012-6-26 13:31:05 | 只看该作者
    哈哈,使用相对路径可以有更简便的方法:
    PathFinder.Locate (RelativePath) 函数可以获取到RelativePath(相对路径)的绝对路径
    例如:
    当前的目录结构为:C:\TEST
    脚本为C:\TEST\action\action1
    Excel在C:\TEST\data\test.xls
    现在我们要在action1下调用test.xls
    则可以使用如下语句表达test.xls的路径:
    PathFinder.Locate ("data\test.xls")
    如果action1和test.xls在同一个目录下,就更简单了,直接PathFinder.Locate ("test.xls")
    同理,写的Function,也可以让每个Action都能调用
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

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

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

    GMT+8, 2024-11-17 14:45 , Processed in 0.068795 second(s), 25 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

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