Anish Pillaiによる「関数ライブラリをQTPスクリプトに関連付ける4つの異なる方法」という投稿を見つけました。これには、いくつかの役立つ情報があります。(ここの元の投稿を参照してください: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
方法# 3ExecuteFileメソッドの使用私が質問で提起したのと同じ欠点があります。便利かもしれませんが、QTP10内でのデバッグにはひどいものです。
方法#4 LoadFunctionLibraryメソッドの使用これは、最も有望なアプローチです。テストの実行中にvbscript関数ライブラリをロードするという必要なことを正確に実行しているようです。唯一のキャッチ?QTP11+のみのようです。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