結果と報告
これらのコマンドと関数を使用して、Eggplant Functionalにおいて、SenseTalkスクリプトによって作成された結果をカスタマイズすることができます。(グローバルプロパティにおけるScriptLoggingも参照してください。)
Assertコマンド
挙動:assertコマンドを実行すると、EggPlant Functionalは指定されたステートメントをtrueまたはfalseとして評価し、Assertコマンドプロパティの設定に応じて、成功、失敗、警告メッセージや例外をログに記録します。Assertコマンドプロパティの説明は、クイックリファレンス:プロパティリストページを参照してください。
パラメータ:Eggplant Functional
構文:
例:
set the AssertionBehavior to "warning" //アサーションのデフォルト挙動を変化させて、例外の代わりに警告が生じるようにします。
assert that x < 10 //AssertionBehaviorグローバルプロパティの事前設定により、xの値が10未満の場合はLogWarningメッセージが作成されます
例:
assert that ConfirmationNumber is "128901823" with Exception "Validating the order confirmation number." //アサーションメッセージをカスタマイズします
例:
params Platform, Version, DebuggingMode
assert paramCount() is greater than 2 with error //少なくとも3つのパラメータ値がスクリプトに渡されていることを確認し、そうでない場合はエラーをログに記録します
Log the assertionErrorCount&&"assertions have failed." //実行時に発生したアサーションエラーの総数をログに記録します
例:
Assert that("iOS","Android","Windows","MacOS") contains SUTPlatform //SUTPlatformに格納されている値が許容可能な4つの値のうちの1つであることを確認し、そうでなければ、例外を投げて実行を中止します
例:
put ReadText("ResultsUpperLeft","ResultsLowerRight") into UnfilteredResults //OCRを利用してSUTから数字を読み取り、変数UnfilteredResultsに格納します
Tap "Filter" //フィルターがonWaitFor 10、「FilterOn」となるアクションをSUT上で実行します
put ReadText("ResultsUpperLeft","ResultsLowerRight") into FilteredResults
assert FilteredResults is less than UnfilteredResults with Warning //SUT上でフィルターを適用した後にOCRによって読み取られた数が、フィルターの適用前より小さいことを確認します
BeginTestCaseおよびEndTestCaseコマンド
挙動:BeginTestCaseコマンドを使用するとテストケースが開き、EndTestCaseコマンドを使用するとテストケースが閉じます。以下の例に示すように、各テストケースには名前が与えられ、引用符で囲まれてコマンドの後に置かれます。
構文:
BeginTestCase "CaseName"
action
EndTestCase "CaseName"
例:
BeginTestCase "SubmitLogin"
Login //Loginという名前のスクリプトを実行します。RunWithNewResultsを用いてスクリプトを呼び出す場合は、Loginの個別のテストケースが自動的に作成されることに注意します
EndTestCase "SubmitLogin"
例:
Click "SearchButton"
BeginTestCase "ResultsLoaded"
WaitFor 20, "Results"
EndTestCase "ResultsLoaded"
set myResult to the result
put myResult.testcase & comma & myResult.duration & comma & myResult.starttime & CRLF after file ResourcePath ("myTimings.csv") // csvファイルに表示される「Results」画像のテストケースの継続時間を書き込みます
例:
BeginTestCase "A" //ケースAに関する報告期間の開始をマークします
//その他のコマンドはここに入れます
EndTestCase "A" //ケースAに関する報告期間を終了し、収集した情報をログに記録します
BeginTestCase "B" //ケースBに関する情報の記録を開始します
//その他のコマンドはここに入れます
BeginTestCase "C" //ケースCに関する情報の記録を開始します
//その他のコマンドはここに入れます
EndTestCase "B" //ケースBを終了し、ケースBが開いてから収集した情報を報告します
//その他のコマンドはここに入れます
//テストケースCを開いたまま実行を終了する場合は、テストケースは自動的に終了し、報告されます
技術トピック
test case(テストケース)を使用すると、スクリプト(または実行中の複数のスクリプト)内のコードの任意のセクションを遮断して、テストの該当部分に関する情報を収集できます。スクリプトの実行には、スクリプトの連続する部分であったり、必要に応じて互いに重複させることのできる複数のテストケースが含まれる場合があります。現時点でのスクリプトの実行用のオープンテストケースに関する情報は、OpenTestCasesグローバルプロパティを利用していつでも取得できます。
各テストケースで収集される情報には、以下の項目が含まれます。
- テストケースの継続時間(秒単位)
- テストケースが開いている間にログに記録されるエラー数
- テストケースが開いている間にログに記録される成功数
- テストケースが開いている間にログに記録される警告数
- テストケースが開いている間にログに記録される例外数
- テストケースの名前
- テストケースを開始した日付と時間
CaptureScreenコマンド
挙動:SUT画面全体、またはプロパティリスト内で指定された矩形のスナップショットをキャプチャします。(選択に対して、またはAd Hoc Doボックス内の)スクリプトの一部としてCaptureScreenを実行する場合は、スクリーンショットはデフォルトでスクリプトの結果フォルダに保存されます。このコマンドは、CaptureScreenプロパティの任意の数のリストを用いてカスタマイズできます。CaptureScreenプロパティの詳細は、クイックリファレンス:プロパティリストページを参照してください。
パラメータ:オプションのプロパティリスト。
構文:
例:
CaptureScreen(Name: "ImageFileName", Rectangle: ((67, 33), imagelocation("OtherCorner")), increment:true)
例:
//ページが新しい状態になっていることを伝える適切な要素が存在しない場合は、以下のようなスクリプトを利用して、ページが以前の状態から変更されているかどうか判断します。
Repeat at least once until not imagefound(image:RxResult, waitFor:0) //少なくとも1回の反復を確保する特別なrepeatループ。最初の反復に限り「not imagefound()」条件が無視されます。その後の反復において、 imagefound関数は、CaptureScreenコマンドによってキャプチャされたスクリーンショットを検索します
put ImageLocation("RxNumberUpperLeft") into RxLocation //画像RxNumberUpperLeftのホットスポットの位置を変数RxLocationに格納します
CaptureScreen(name:"PrescriptionNumber", Rectangle:(RxLocation, RxLocation + (140,100))) //RxLocationの右側に表示された固有の番号のスクリーンショットをキャプチャします
put the result into refImage //CaptureScreenのスクリーンショットのフルファイルパスを格納します
Click "ClosePrescription" //画面を変化させるアクションを実行します
wait 1
if the repeatIndex = 5 then Throw "Image not Found","Closing the current prescription did not work." //repeatループを5回実行する場合は例外を投げます
end repeat
例:
CaptureScreen(name:SuiteInfo(). ImagesFolder&slash&"CurrentLogo",rectangle:("WelcomeImage","Border"))
例:
// 以下のようなスクリプトを使用して、ページの一番下までスクロールした時期を検出します
put RemoteScreenSize() into DUTScreenSize //DUTScreenSizeと呼ばれる変数にSUTの解像度を格納します
put (.25*DUTScreenSize.x,.25*DUTScreenSize.y,.75*DUTScreenSize.x,.75*DUTScreenSize.y) into ClippingRectangle //フルサイズのSUTのサブセットである矩形を作成します。サブセットの使用は、時計や通知領域など、画面の動的要素をキャプチャしないようにするのに役立ちます
CaptureScreen (Name: "state", Rectangle: ClippingRectangle) // ClippingRectangle座標を使用して、SUTのスクリーンショットをキャプチャします
put the result into refImage //後の参照を容易にするために、保存したCaptureScreenのスクリーンショットのファイルパスを変数に格納します
repeat at least once while not imageFound (image:refImage, searchRectangle:ClippingRectangle, waitFor:0) //それがキャプチャされた元の画面上の同じ場所でCaptureScreen画像を検索し、SUTに対して少なくとも1回のスクロールアクションが実行されていることを確認します。スクロールイベントの後でCaptureScreen画像がsearchRectangle内に存在する場合は、repeatループを終了します
CaptureScreen (Name: "state", Rectangle: ClippingRectangle) //新しいCaptureScreen画像を作成し、スクロールアクションが発生した事実を反映させます
put the result into refImage
SwipeUp //スクロールアクションを繰り返して、ページ下方にスクロールします
Wait 2.5 //一般的に、継続前にUIが動きを止めることを可能にする待機時間が求められます
end repeat
例:
//以下のようなスクリプトを利用して、ビデオプレーヤーなどの画面上のエレメントが変化しているかどうかを判断します
put imageLocation("VideoNameHeader") into VideoLoc //変化しているエレメントの参照画像の位置を格納します
put (VideoLoc,VideoLoc+(250,230)) into myRectangle //VideoLocに格納された位置と、250ピクセル右、230ピクセル下のオフセットを利用して矩形を作成します
CaptureScreen(name:"VideoCheck",rectangle:myRectangle) //myRectangleに格納された矩形を利用して、CaptureScreenにキャプチャされた画面のサブセットを指定します
put the result into imageFilePath
set the searchRectangle to myRectangle //検索領域を、CaptureScreenが使用する画面の同じサブセットに制限します
repeat until not imagefound (image:imageFilePath, waitfor:0) //CaptureScreen画像の検索を表示されなくなるまで繰り返します
Wait 3 //CaptureScreen画像を再度検索する前に、エレメントが変更する時間を確保します
if the repeatIndex is greater than 10 then Throw "Video stream exception","The video is not advancing." //エレメントが10回のrepeatループの実行後も変化しない場合は、スクリプトの実行を終了する手段を提供します
end repeat
set the searchRectangle to empty //searchRectangleの設定を元の全画面に戻します
ヒント:CaptureScreenの結果は、スクリーンショットのフルファイルパスとなります。
例:
CaptureScreen
put the result
ColorAtLocation関数
挙動:所定の位置のピクセルの色値を返します。座標は、SUTの左上隅に対する相対座標となります。左上隅の座標は(0,0)で、xの値は右に向って、yの値は下に向って増加します。
パラメータ:1つの座標位置、画像、またはテキスト(OCR)リファレンス。
戻り値:所定の位置のピクセルの色値。詳細情報は、
構文:
例:
log ColorAtLocation(593,110)
例:
if imagefound(Text:"Document") then
put colorAtLocation( the topleft of FoundImageInfo().imagerectangle) into myColor //SUT上の文字列「Document」の左上隅から5ピクセル左のピクセルのRGB値を特定します
if myColor=color("black") then //color関数を利用して黒のRGB値を返し、これを実際のRGB値と比較します
LogSuccess "Black background"
else
LogWarning "Background color" && myColor && "unexpected."
end if
end if
例:
Set the ColorFormat to "HTML" //ColorAtLocation()とColor()によって返されるcolorフォーマットを16進数に変更します
put ColorAtLocation ("StatusIndicator") into myColor
If myColor isn't "#AFF7DF" then LogError "Color is not #AFF7DF. Color is " &myColor&period
Logコマンド
挙動:スクリプトのログファイル内でエントリを作成します。複数のメッセージパラメータを設定する場合は、各メッセージは個別のエントリとして挿入されます。(ScriptLoggingグローバルプロパティ値が MinimalまたはSilentの場合は、このコマンドは無効となります。)
パラメータ:1つ以上のLogメッセージ。
例:
Log "Beginning the login sequence now."
例:
log "Today is" &&the long date & period //文字列とlong date関数の出力を結合します
例:
log "This is my first message.", "This is my second message" //結果に個別のログエントリを含む各メッセージをログに記録します
LogErrorコマンド
挙動:本コマンドは、LogおよびLogWarningコマンドと同じように振る舞いますが、赤色のテキストでログエントリを表示し、そのスクリプトを失敗として記録します。
パラメータ:1つ以上のログメッセージ。
構文:
例:
LogError "This is my error message."
例:
If imageFound("ExceptionDialog") then
CaptureScreen // LogErrorはImageNotFoundの例外のようには自動的に作成を行わないため、失敗した箇所でスクリーンショットを作成します
LogError "Known critical error occurred. Ending execution."
exit all //現在のハンドラとその呼び出し元のハンドラ、および呼び出しスタックのさらに上位のその他すべてのハンドラの実行を終了します
end if
LogSuccessコマンド
挙動:本コマンドはLogコマンドと同じように振る舞いますが、スクリプトの成功カウントに1を追加します。
パラメータ:1つ以上のLogメッセージ。
構文:
例:
LogSuccess "The page loaded properly at" &&the short time&"."
LogWarningコマンド
挙動:本コマンドはLogコマンドと同じように振る舞いますが、オレンジ色のテキストでログエントリを表示します。
パラメータ:1つ以上のログメッセージ。
構文:
例:
LogWarning "This script is executing at "&the long time&"."
例:
if ImageFound("CommunicationMessage") then LogWarning "Known bug #18922 has occurred." //特定の自動的な手順において、特定の画像が検出された場合にのみ警告メッセージをログに記録します
ScriptResults関数
挙動:所定のスクリプトを実行するたびに、結果のプロパティリストをその実行順に返します。結果のプロパティリストの詳細は、クイックリファレンス:プロパティリストページを参照してください。
パラメータ:スクリプト名1つ。スクリプトが指名されない場合は、本関数はデフォルトで現在のスクリプトを使用します。
戻り値:所定のスクリプトの実行ごとの結果のプロパティリストのリスト
構文:
例:
put ScriptResults("Login") into LoginResults //Loginのすべての実行の結果のプロパティリストのリストを LoginResultsと命名された変数に入れます
例:
put the logfile of the last item of scriptResults("DemoScript") into myResult //スクリプト「DemoScript」の直近の(最後の)結果のlogfileプロパティの値をとって変数に格納します
delete "/LogFile.txt" from myResult // logfileのファイルパスの文字列を操作し、結果のフォルダパスの文字列となるようにします
copy folder myResult to "C:\Users\Carrie\Desktop\TodaysResults" //結果フォルダをデスクトップ上の新しい場所にコピーします
例:
Log "These are the historic results of Login"
repeat with each item Run of scriptResults("Login") //スクリプト「Login」の実行ごとにプロパティリストを反復処理します
Log the date of Run.RunDate&&the time of Run.RunDate&&Run.status //Loginの実行ごとに日付、時間およびステータスをログに記録します
end repeat
例:
put the logFile of the last item of scriptResults("MasterScript") into myResult //*直近のMasterScriptの実行の結果のプロパティリストを変数に入れます。*
delete "Logfile.txt" from myResult // logfileのファイルパスの文字列を操作し、結果のフォルダパスの文字列となるようにします
CaptureScreen(name:myResult&"WelcomeScreenUI") //myResultに基づき、CaptureScreenのスクリーンショットの保存位置を指定します
ヒント:ScriptResults()の結果のプロパティリストは、実行後のスクリプトに自動的に渡されます。実行後のスクリプトの文脈において、戻り値が最もよく使用される場合があります。
例:
//これはメインスクリプト用のコードです
Login
capturescreen increment:yes
insert the result after returnVar //新しいアイテムとして、capturescreenの「the result」(ファイルパス)を変数returnVar内のリストの最後に追加します
return returnVar //returnVarの値を返し、ScriptResults()のReturnValueプロパティに含まれるようにします。ReturnValueプロパティは文字列のみを返し、trueリストは返さないため、後の処理において、リストとして戻り値を表示する必要があることに注意します
//メインスクリプトの終了
例:
//これは実行後のスクリプト用のコードです
params scriptPath, myScriptResults//実行後のスクリプトに渡された2つのデフォルトパラメータ(2つ目はscriptResults())を受け取ります
//次の3行のコードは、returnList内の値の処理を行い、リストとして書式を整えます
put myScriptResults. ReturnValuesplit by","into returnList
delete "(" from returnList
delete ")" from returnList
put myScriptResults. Errors into errors//Errorsプロパティの値をerrorsという名前の変数に格納します
SendMail(to: "test@gmail.com", Subject:title & " - Errors= " & errors, Message:"Find the screenshots from the Eggplant test script attached. Number of errors: " & errors, attachment:returnList) //件名にエラー数を記載し、メインスクリプトのスクリーンショットを添付したメールを送信します
SendMailコマンド
挙動:スクリプト内からメールを送信します。パラメータは、SendMailプロパティリストに含まれます。SendMailプロパティリストの詳細は、クイックリファレンス:プロパティリストページを参照してください。
パラメータ:以下に示すプロパティリスト1つ。
構文:
例:
sendmail(to: "testmanager@somecompany.com, tester1@somecompany.com", subject: "Test failed", body: "The very important test script generated an error. The log file is attached.", attachment: logfile)
例:
RunWithNewResults "Login"
put the result into Outcome //RunWithNewResultsからの結果のプロパティリストを変数Outcomeに格納します
//異なるsendmailプロパティを別々の行に表示することで、コードをより読みやすくすることができます
SendMail(To: "test@gmail.com",\
subject:"Login script results:"&&Outcome's status,\
body:"Find attached the logfile for the script run.",\
attachment:(Outcome's Logfile))
例:
RunWithNewResults TestScript // TestScriptは、実行対象のスクリプトの名前が格納されている変数です
put the result into Outcome
put the long name of each of the files of the folder of Outcome's logfile where each ends with ".png" into myfiles // 結果に全スクリーンショットのファイルパスを含むリストを作成します
SendMail (To:"test@gmail.com",Subject:title & "---Test results" ,body:TestScript & "Results"& Outcome,attachment:Outcome's Logfile &&& myFiles)
StartMovieコマンド
挙動:SUTの動画の記録を開始します。ファイルパスを指定しない場合は、動画は本Suiteの結果ディレクトリに保存されます。動画は拡張子が.mkvのファイルに保存されます。ファイルパスを指定しない場合は、動画はスクリプトの実行の結果フォルダに保存されます。フレームレートを指定しない場合は、動画は1秒につき10フレームで記録されます。
ExtraTimeは、StopMovieコマンドの実行後も所定の秒数だけ記録を継続します。デフォルトは5秒です。ImageHighlightingは、検索矩形が動画内でハイライトされるかどうかを決定するブーリアン値です。この設定は、実行メニューからImage Highlighting(画像ハイライト)設定を上書きします。
パラメータ:キャプチャしようとしている動画のファイル名とオプションのファイルパス。FramesPerSecond、ExtraTimeおよびimageHighlightingもオプションです。
構文:
例:
StartMovie "/User/Documents/BugMovie" //BugMovieという名前が付いた動画の記録を開始します
例:
StartMovie "/User/Documents/BugMovie", framesPerSecond:5, extraTime:10, imageHighlighting:Yes
例:
if runningFromCommandLine() then //コマンド行の実行を介してのみスクリプトを実行するかどうかを決定します
startmovie "BugMovie"
login
stopmovie
end if
StopMovie コマンド
挙動:スクリプトによって開始された動画の記録を終了します。
パラメータ:なし。
構文:
例:
StopMovie
TraceScreen On/Offコマンド
挙動:TraceScreenモードのオン/オフの切り替えを行います。TraceScreenモードがオンの場合は、SUTのフル画像が、SUTで作動する各コマンドの実行直前に結果にキャプチャされます。これらの画面キャプチャは本Suite Editorの結果ペインのLog Areaで入手でき、スクリプトの結果フォルダに格納されます。
パラメータ:OnまたはOff。
構文:
例:
TraceScreen On
Run "SearchStore" //SearchStoreスクリプト内で発生するイベントだけを画面トレースします
TraceScreen Off