結果と報告

これらのコマンドと関数を使用して、Eggplant Functionalにおいて、SenseTalkスクリプトによって作成された結果をカスタマイズすることができます。(グローバルプロパティにおけるScriptLoggingも参照してください。)

Assertコマンド

挙動:assertコマンドを実行すると、EggPlant Functionalは指定されたステートメントをtrueまたはfalseとして評価し、Assertコマンドプロパティの設定に応じて、成功、失敗、警告メッセージや例外をログに記録します。Assertコマンドプロパティの説明は、クイックリファレンス:プロパティリストページを参照してください。

パラメータ:Eggplant Functionalに評価させたいステートメント。以下の最初の例に示すように、 単語thatassertコマンドに挿入して読みやすくすることができます。

構文:

assert that statement

例:

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グローバルプロパティを利用していつでも取得できます。

各テストケースで収集される情報には、以下の項目が含まれます。

  • テストケースの継続時間(秒単位)
  • テストケースが開いている間にログに記録されるエラー数
  • テストケースが開いている間にログに記録される成功数
  • テストケースが開いている間にログに記録される警告数
  • テストケースが開いている間にログに記録される例外数
  • テストケースの名前
  • テストケースを開始した日付と時間
注:各実行の開始時に、実行されるスクリプトの名前が付いたテストケースが1つ自動的に作成されます。
注:実行の終わりに、開いたままのテストケースは自動的に終了し、報告されます。
注:initialハンドラ(スクリプトそのもの)はテストケースとみなされ、テストケースとして報告されます。宣言済みのテストケースが開いていないか、テストケースが全く宣言されていない場合は、スクリプトが唯一のオープンテストケースとして報告されます。
注:テストケースは互いに重複させることができます。
ヒント:バージョン5.2以降において、Eggplant Managerはスクリプトの結果からテストケースデータを自動的に解析し、ダッシュボードのチャート内にテストケースの継続時間を表示します。解析されたテストケースデータは、Eggplant Managerからエクスポートできます。

CaptureScreenコマンド

挙動:SUT画面全体、またはプロパティリスト内で指定された矩形のスナップショットをキャプチャします。(選択に対して、またはAd Hoc Doボックス内の)スクリプトの一部としてCaptureScreenを実行する場合は、スクリーンショットはデフォルトでスクリプトの結果フォルダに保存されます。このコマンドは、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の設定を元の全画面に戻します

注:選択の一部としてまたはAd Hoc Do Box内でCaptureScreenコマンドを実行すると、ローカルユーザーのドキュメントディレクトリ(C:/Users/<username>/Documents/)にスクリーンショットが保存されます。
ヒント:複数のスナップショットをスクリプト内でキャプチャする場合は(ループや頻繁に呼び出されるハンドラなど)、インクリメントが役に立ちます。すべての画像は、インクリメント数で区別される同じ画像名を保持できます。それ以外の場合は、各画像は同じ名前を持つ前の画像を上書きします。

ヒント:CaptureScreenの結果は、スクリーンショットのフルファイルパスとなります。

例:

CaptureScreen

put the result

ColorAtLocation関数

挙動:所定の位置のピクセルの色値を返します。座標は、SUTの左上隅に対する相対座標となります。左上隅の座標は(0,0)で、xの値は右に向って、yの値は下に向って増加します。

パラメータ:1つの座標位置、画像、またはテキスト(OCR)リファレンス。

戻り値:所定の位置のピクセルの色値。詳細情報は、 SenseTalkリファレンスマニュアル色の取り扱いを参照してください。

構文:

log ColorAtLocation(coordinate1,coordinate2)

例:

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."

例:

LogError "This is my error message."

例:

If imageFound("ExceptionDialog") then

CaptureScreen // LogErrorはImageNotFoundの例外のようには自動的に作成を行わないため、失敗した箇所でスクリーンショットを作成します

LogError "Known critical error occurred. Ending execution."

exit all //現在のハンドラとその呼び出し元のハンドラ、および呼び出しスタックのさらに上位のその他すべてのハンドラの実行を終了します

end if

注:ScriptLoggingグローバルプロパティがSilentに設定されている場合は、エラーメッセージはログファイルに挿入されませんが、実行のエラーカウントは継続して増加し、最終的な実行ステータスはFailureとなります。

LogSuccessコマンド

挙動:本コマンドはLogコマンドと同じように振る舞いますが、スクリプトの成功カウントに1を追加します。

パラメータ:1つ以上のLogメッセージ。

構文:

LogSuccess

例:

LogSuccess "The page loaded properly at" &&the short time&"."

LogWarningコマンド

挙動:本コマンドはLogコマンドと同じように振る舞いますが、オレンジ色のテキストでログエントリを表示します。

パラメータ:1つ以上のログメッセージ。

構文:

LogWarning "Warning text"

例:

LogWarning "This script is executing at "&the long time&"."

例:

if ImageFound("CommunicationMessage") then LogWarning "Known bug #18922 has occurred." //特定の自動的な手順において、特定の画像が検出された場合にのみ警告メッセージをログに記録します

ヒント:Suite Editorの結果ペインには、各スクリプトの実行に関連する警告数が表示されます。警告は、ScriptLoggingMinimalまたはSilentに設定されている場合にもカウントされます。

ScriptResults関数

挙動:所定のスクリプトを実行するたびに、結果のプロパティリストをその実行順に返します。結果のプロパティリストの詳細は、クイックリファレンス:プロパティリストページを参照してください。

パラメータ:スクリプト名1つ。スクリプトが指名されない場合は、本関数はデフォルトで現在のスクリプトを使用します。

戻り値:所定のスクリプトの実行ごとの結果のプロパティリストのリスト

構文:

put ScriptResults("Results") into Results_name

例:

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: "アドレス1,アドレス2", subject: "件名", body: "メッセージ本文", attachment: ファイル名)

例:

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)

重要:Eggplant Functionalの環境設定内のSMTPサーバー設定は、ユーザーレベルの環境設定のみであるため、コマンド行またはEggplant Managerスクリプトの実行からsendMailを起動する場合は、SendMailコマンドと一緒に、smtp_userやsmtp_hostなどのSMTPサーバーの詳細を指定することが一般的に求められます。

StartMovieコマンド

挙動:SUTの動画の記録を開始します。ファイルパスを指定しない場合は、動画は本Suiteの結果ディレクトリに保存されます。動画は拡張子が.mkvのファイルに保存されます。ファイルパスを指定しない場合は、動画はスクリプトの実行の結果フォルダに保存されます。フレームレートを指定しない場合は、動画は1秒につき10フレームで記録されます。

ExtraTimeは、StopMovieコマンドの実行後も所定の秒数だけ記録を継続します。デフォルトは5秒です。ImageHighlightingは、検索矩形が動画内でハイライトされるかどうかを決定するブーリアン値です。この設定は、実行メニューからImage Highlighting(画像ハイライト)設定を上書きします。

パラメータ:キャプチャしようとしている動画のファイル名とオプションのファイルパス。FramesPerSecondExtraTimeおよびimageHighlightingもオプションです。

構文:

StartMovie "/Path/to/Movie"

例:

StartMovie "/User/Documents/BugMovie" //BugMovieという名前が付いた動画の記録を開始します

例:

StartMovie "/User/Documents/BugMovie", framesPerSecond:5, extraTime:10, imageHighlighting:Yes

例:

if runningFromCommandLine() then //コマンド行の実行を介してのみスクリプトを実行するかどうかを決定します

startmovie "BugMovie"

login

stopmovie

end if

ヒント:.mkvのファイル形式を利用すると、動画は圧縮されずに記録されます。動画を記録する際は、十分なディスク空き容量が確保されていることを確認してください。
ヒント:StartMovieコマンドによって作成された動画を見るには、VLC Playerの利用が推奨されます。

StopMovie コマンド

挙動:スクリプトによって開始された動画の記録を終了します。

パラメータ:なし。

構文:

StopMovie

例:

StopMovie

TraceScreen On/Offコマンド

挙動:TraceScreenモードのオン/オフの切り替えを行います。TraceScreenモードがオンの場合は、SUTのフル画像が、SUTで作動する各コマンドの実行直前に結果にキャプチャされます。これらの画面キャプチャは本Suite Editorの結果ペインのLog Areaで入手でき、スクリプトの結果フォルダに格納されます。

パラメータ:OnまたはOff

構文:

TraceScreen On

例:

TraceScreen On

Run "SearchStore" //SearchStoreスクリプト内で発生するイベントだけを画面トレースします

TraceScreen Off

ヒント:TraceScreenはSUTのフルサイズのスクリーンショットをキャプチャするため、大量のディスク容量を消費することを意味します。TraceScreenの使用には細心の注意が必要です。
注:TraceScreenは診断ツールとしての使用が想定されているため、TraceScreen Offコマンドを発行する場合は、最終的な画面のキャプチャが作成されます。TraceScreenが既にオフの場合でも、TraceScreen Offコマンドの発行により、画面キャプチャが作成されます。

 

This topic was last updated on 2月 01, 2019, at 11:13:23 午前.

Eggplant icon Eggplant.io | Documentation Home | User Forums | Support | Copyright © 2019 Eggplant