QTP定义和封装FUnction
我想将我自己写的Function放在一个地方,让每个Action都能调用。请问QTP有没有这样一个功能
请各位大侠给个例子 有很多种方法。一般可以把函数库保存为vbs、qfl或者好像txt也可以的。
然后在File—Test Setting里面有个resources,加载你的函数库文件,这样就可以使用了。不过如果是不同的Test,那就需要再添加,反正保证你需要使用到函数库的那个Test一定要加载这个函数库文件。
另一个办法可以直接写语句,需要使用的地方就写一个。
ExcuteFile "D/fun.vbs"
这样也是可以的。 第二种可以更灵活点,但是貌似第二种可以写相对路径吗?
回复 3# 的帖子
好像不行的。要用绝对路径了。我之前在客户那边是这样应用的,客户有测试执行机,和我们的办公电脑网络不通的,只能通过Terminal访问。后来为了方便大家使用,指定了一台机器设置了一个共享目录给大家。然后让大家通过添加网络驱动器的方式添加这个共享目录,并且统一命名,例如M盘。
这样以后大家需要用的相关函数库或者截图都放在那边了,比如函数库就可以这样写
ExcuteFile "M:/fum.vbs"
在任何地方执行案例都不会有问题,只要加了网络驱动器。
至于你想写相对路径,那案例执行的时候相对谁呢?总不能是QC吧,所以还是只能用绝对路径的。 可以设置一个环境变量来存储路径,然后就可以使用相对路径了。
例如:
executefile environment("FilePath") & "\1212.vbs"
其中的FilePath是QTP中自定义设置的一个环境变量。
回复 5# 的帖子
想法不错。不过那样不是多了一步么,你还要在每个Test Setting里设置环境变量。然后还是要在action里写executefile 如果项目文件路径不会改变的话,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 编辑 ] 谢谢大家的指点 呵呵 哈哈,使用相对路径可以有更简便的方法:
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]