Function 如何在函数';她在跑步吗?

Function 如何在函数';她在跑步吗?,function,vbscript,import,qtp,Function,Vbscript,Import,Qtp,我为我的QTP10测试构建了许多函数,其中许多函数依赖于其他相关函数。我想让我的函数导入它们需要的任何其他函数。目前,我必须检查我的每个函数,并手动关联它们的每个依赖项 虽然我知道ExecuteFile“C:\Functions\SampleFunction.vbs”可以工作,但缺点是QTP无法显示它刚刚导入的任何代码。这意味着调试代码是一场噩梦,因为QTP将在与实际运行的代码不对应的行上显示黄色调试指针。长话短说,这种做法是一团糟 有没有其他命令可以在运行时将其他.vbs文件导入QTP,这样我

我为我的QTP10测试构建了许多函数,其中许多函数依赖于其他相关函数。我想让我的函数导入它们需要的任何其他函数。目前,我必须检查我的每个函数,并手动关联它们的每个依赖项

虽然我知道
ExecuteFile“C:\Functions\SampleFunction.vbs”
可以工作,但缺点是QTP无法显示它刚刚导入的任何代码。这意味着调试代码是一场噩梦,因为QTP将在与实际运行的代码不对应的行上显示黄色调试指针。长话短说,这种做法是一团糟


有没有其他命令可以在运行时将其他.vbs文件导入QTP,这样我就可以让函数导入它们所需的其他函数?

我找到了Anish Pillai的一篇文章,名为“将函数库与QTP脚本关联的4种不同方法”,其中有一些有用的信息。(参见此处的原始帖子:)

方法#1是将函数与测试关联起来的常用方法;没有什么新鲜事

方法#2使用AOM(自动化对象模型)
我尝试了许多不同的变体,但它们似乎都是用于从QTP外部启动特定测试的脚本,而不是用于向正在运行的测试添加函数。 以下是他们的代码,以防证明有用:

'Open QTP
Set objQTP = CreateObject("QuickTest.Application")
objQTP.Launch
objQTP.Visible = True

'Open a test and associate a function library to the test
objQTP.Open "C:\Automation\SampleTest", False, False
Set objLib = objQTP.Test.Settings.Resources.Libraries

'If the library is not already associated with the test case, associate it..
If objLib.Find("C:\SampleFunctionLibrary.vbs") = -1 Then ' If library is not already added
  objLib.Add "C:\SampleFunctionLibrary.vbs", 1 ' Associate the library to the test case
End
方法#3使用ExecuteFile方法 和我在问题中提到的一样。这可能很有用,但在QTP10中进行调试非常糟糕

方法#4使用LoadFunctionLibrary方法 这是最有希望的办法。它似乎正是我们所需要的:在测试运行时加载vbscript函数库。唯一的陷阱是什么它似乎仅为QTP 11+。我不能保证这种方法,因为我没有QTP11,但它看起来是完美的方法

LoadFunctionLibrary "C:\YourFunctionLibrary_1.vbs" 'Associate a single function library
LoadFunctionLibrary "C:\FuncLib_1.vbs", "C:\FuncLib_2.vbs" 'Associate more than 1 function libraries

您是否知道
LoadFunctionLibrary
和多次重新加载同一个库(就像您在其他库中使用
@import
时所做的那样)是否有负面副作用?QTP10用户在这里,但只是好奇,因为。。。你知道,我只是想知道。我所知道的与
LoadFunctionLibrary
ExecuteFile
相关的唯一负面影响是
LoadFunctionLibrary
不支持用户定义的类。即使使用方法3,如果使用excels,它们也将被重命名,并且您将能够找到它们!我刚刚发现的另一个负面影响是,如果您通过
LoadFunctionLibrary
从任何导入的FL获取任何函数,则
GetRef
将不起作用。但是,如果使用
ExecuteFile
,它就可以工作