キャンセル
次の結果を表示 
次の代わりに検索 
もしかして: 

第三回QTP勉強会の宿題

ゆもつよ
頻繁なアドバイザー

第三回QTP勉強会の宿題

第二回の宿題の回答にて、タイムスタンプを取得してそれをフォルダ名にするというスクリプトがありました

 

 resultsFolderPath = "C:\result"

' 結果の親フォルダがない場合には、作成をする
Set fso = CreateObject("Scripting.FileSystemObject")
If  not fso.FolderExists(resultsFolderPath) Then
	fso.CreateFolder(resultsFolderPath)
End If

' 実行パス用のフォルダを作成する
resultsFolderPath = resultsFolderPath & "\" & GetCurrentTimeStringLongFormat()
fso.CreateFolder(resultsFolderPath)

 

ここで使われている[GetCurrentTimeStringLongFormat()]という関数は、このスクリプト内で作られている関数です。

 

Function GetCurrentTimeStringLongFormat
	Dim result
	Dim current
	current = now
	result  = Right("0000" & Year(current), 4)
	result = result & Right("00" & Month(current), 2)
	result = result &Right("00" & Day(current), 2) & "-"
	result =result  &Right("00" & Hour(current), 2)
	result = result  & Right("00" & Second(current),2)
	GetCurrentTimeStringLongFormat = result
End Function

  この関数はこのままでは、このスクリプトだけでしか使えません。こういう便利な関数はいろいろなスクリプトでも使いまわしたくなります。QTPではユーザ定義関数(マニュアルの第29章)にて、関数の使い回しが容易になる仕掛けが用意されています。

 

今回の宿題は、この[GetCurrentTimeStringLongFormat()]をユーザ定義関数として登録し、フォルダを作るスクリプトが実行できるようにしてみてください。

 

宿題をやってきた方はいつもどおり当日スクリプトを持参してください。このスレットの返信でやってきたことを教えていただけると段取りができるのでうれしいです。

1 件の返信
ゆもつよ
頻繁なアドバイザー

Re: 第三回QTP勉強会の宿題

GetCurrentTimeStringLongFormatをテキストにコピペして、関数ファイルとして保存します。

名前は任意で拡張子をqfl、およびvbsにします。

' ユーザ定義関数の定義です
' By よしむら
Option Explicit

' ここからが定義の開始です
'@Description 現在の日時を示す文字列を返す
'@Documentation 現在の日時を示す文字列を取得
Function GetCurrentTimeStringLongFormat
	Dim result
	Dim current
	current = now
	result  = Right("0000" & Year(current), 4)
	result = result & Right("00" & Month(current), 2)
	result = result &Right("00" & Day(current), 2) & "-"
	result =result  &Right("00" & Hour(current), 2)
	result = result &Right("00" & Minute(current),2)
	result = result  & Right("00" & Second(current),2)
	GetCurrentTimeStringLongFormat = result
End Function
' 定義の終わり

' ユーザ定義関数の登録処理
' テストオブジェクト、メソッド名は指定していません
RegisterUserFunc  "", "" ,"GetCurrentTimeStringLongFormat",false

 この関数ファイルをTrial.qflにします。

 

その後QTPのスクリプトの中で関数を使う方法が何種類かあります。

その1:QTPの中で、ユーザ定義関数を呼ぶVSScriptコマンドを実行する方法

'ユーザ定義関数を作るサンプル
' by よしむら

Option Explicit

'ユーザ定義関数のライブラリファイルを読み込みます
ExecuteFile "..\UserFunctions\Trial.qfl"

' ユーザ定義関数を呼び出して結果を確認します
msgbox "ユーザ定義関数の結果 [" & GetCurrentTimeStringLongFormat & "]"

 

その2:QTPの中でユーザ定義関数の読み込み(ロード)スクリプトを記載してから実行させる方法

 

LoadFunctionLibrary "C:\Program Files\HP\QuickTest Professional\Tests\Trial3.qfl"

msgbox GetCurrentTimeStringLongFormat

 

 

 

その3:QTPのUI上でユーザ定義関数を登録してから実行する方法

 

 

usefunc.jpg

 

'関連づけしているので読み込みがいらない
msgbox GetCurrentTimeStringLongFormat