我为QTP 10测试构建了许多函数,其中许多函数依赖于其他相关函数。我想让我的函数导入他们需要的任何其他函数。目前,我必须仔细检查每个函数并手动关联它们的每个依赖项。
虽然我知道ExecuteFile "C:\Functions\SampleFunction.vbs"
会起作用,但缺点是QTP无法显示刚刚导入的任何代码。这意味着调试代码是一场噩梦,因为QTP会在行上显示黄色调试指针,这些指针与实际运行的代码不对应。长话短说,这种方法很乱。
是否还有其他命令会在运行时将其他.vbs文件导入QTP,所以我可以让这些函数导入他们需要的其他函数吗?
答案 0 :(得分:2)
我发现Anish Pillai的一篇文章称“4种不同的方式将功能库与QTP脚本相关联”,这有一些有用的信息。 (请参阅此处的原始帖子:http://www.automationrepository.com/2011/09/associate-function-library-to-qtp-script/)
方法#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方法 我在问题中提出了同样的垮台。可能有用,但在QTP 10中进行调试非常糟糕。
方法#4 使用LoadFunctionLibrary方法 这是最有前途的方法。它似乎完全符合我们的需要:在测试运行时加载vbscript函数库。唯一的收获? 似乎只是QTP 11+ 。我不能保证这种方法,因为我没有QTP 11,但它看起来像是完美的方法。
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