結果とレポーティング
これらのコマンドと関数を使 用して、Eggplant FunctionalのSenseTalkスクリプトによって作成される結果をカスタマイズします。(スクリプトログ記録も参照してください。)
Assert
コマンド
Behavior: assert
コマンドを実行すると、Eggplant Functionalは指定された条件(式)を真または偽として評価します。偽と評価された場合、デフォルトでは assert
は例外をスローします。振る舞いの設定により、成功、失敗、警告をログに記録することも可能です。assert
コマンドの失敗振る舞いは、下記の構文と例で示されるように、Assert
コマンドのプロパティを使用してインラインで設定することができます。この振る舞いは、AssertionBehavior
グローバルプロパティを使用して設定することも可能です。読みやすさを向上させるため、assert
コマンドに that
を挿入することができます。
Parameters: Eggplant Functionalに評価させたい条件(式)。
構文:
assert {that} condition {with [warning | error | exception | pause]}
例: AssertionBehavior
グローバルプロパティを使用して、条件が偽と評価された場合の assert
コマンドの振る舞いを設定します。
set the AssertionBehavior to "warning" // 警告を生成するためにアサーションのデフォルトの振る舞いを変更します。
assert that x < 10 // AssertionBehavior グローバルプロパティが以前に設定したため、x の値が10未満でない場合、警告メッセージをログに記録します。
例:
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つの許容値のいずれかであることをアサートし、そうでない場合は、実行を停止するために例外をスローします。
例:
put ReadText("ResultsUpperLeft","ResultsLowerRight") into UnfilteredResults // SUTから数字を読み取るためにOCRを使用し、それをUnfilteredResults変数に格納します
Tap "Filter" // SUTでアクションを実行してフィルターがオンになるようにします。10秒間待ちます、"FilterOn"
put ReadText("ResultsUpperLeft","ResultsLowerRight") into FilteredResults
assert FilteredResults is less than UnfilteredResults with Warning // SUTにフィルターを適用した後にOCRで読み取った数値が、フィルターを適用する前よりも小さいことをアサートします。
BeginTestCase
および EndTestCase
コマンド
Behavior: BeginTestCase
コマンドはテストケースを開くために使用され、EndTestCase
コマンドはテストケースを閉じるために使用されます。各テストケースは、下の例に示すように名前が付けられます。
構文:
BeginTestCase CaseName
actions
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") // "Results"画像のテストケースの期間をcsvファイルに出力します
例:
BeginTestCase "A" // ケースAのレポート期間の開始をマークします
// その他のコマンドはここに
EndTestCase "A" // ケースAのレポート期間を終了し、集めた情報をログに記録します
BeginTestCase "B" // ケースBの情報の記録を開始します
// その他のコマンドはここに
BeginTestCase "C" // ケースCの情報の記録を開始します
// その他のコマンドはここに
EndTestCase "B" // ケースBを終了し、ケースBが開始されて以降に集めた情報をレポートします
// その他のコマンドはここに
// テストケースCがまだ開いている状態で実行が終了した場合、自動的に終了して報告されます
デックトーク
テストケース は、テストの一部に関する情報を集める目的で、スクリプト内(または実行中のスクリプト間)の任意のコードセクションをブロックするために使用されます。スクリプトの実行は複数のテストケースを含むことがあり、これらはスクリプトの連続した部分であるか、または望まれるように互いに重なることがあります。現在のスクリプト実行についての開いているテストケースの情報は、いつでもOpenTestCases
グローバルプロパティを使用して取得できます。
各テストケースで収集される情報には以下のものが含まれます:
- テストケースの期間(秒単位)
- テストケースが開いている間に記録されたエラーの数
- テス トケースが開いている間に記録された成功の数
- テストケースが開いている間に記録された警告の数
- テストケースが開いている間に記録された例外の数
- テストケースの名前
- テストケースが開始された日時
各実行の最初には、実行されているスクリプトの名前で自動的に1つのテストケースが作成されます。
実行の終了時には、まだ開いているテストケースはすべて終了し、自動的に報告されます。
初期ハンドラ(スクリプト自体)はテストケースと見なされ、開かれている宣言されたテストケースがない場合、または全くテストケースが宣言されていない場合、スクリプトは唯一開かれているテストケースとして報告されます。
テストケースは重なることができます。
バージョン5.2から、Eggplant Managerは自動的にスクリプト結果からテストケースデータを解析し、ダッシュボードチャートでテストケースの期間を表示します。解析されたテストケースデータはEggplant Managerからエクスポート可能です。
CaptureScreen
コマンド
Behavior: SUTスクリーン全体のスナップショットを取得するか、プロパティリストで示された矩形を取得します。CaptureScreen
のプロパティの任意の数のリストでこのコマンドをカスタマイズすることができます。
CaptureScreen
がスクリプトの一部として実行されると、スクリーンショットはスクリプトの結果フォルダに保存されます。CaptureScreen
コマンドが選択の一部として、またはAd Hoc Do Boxから実行されると、結果のスクリーンショットはあなたのローカルユーザーのドキュメントディレクトリに保存されます(例:C:/Users/<username>/Documents/
)。
すでに知っていない場合、スクリーンショットがどこに保存されているかを知っておくと便利です。キャプチャした画像のファイルパスにアクセスする方法は、以下のようにResult
functionを使用します:
CaptureScreen
put the result -- CaptureScreenを使って前の行でキャプチャしたスクリーンショットのフルパスを返します。
JPG形式でCaptureScreen
を使用してキャプチャした画像は、画像検索に使用するべきではありません。JPG圧縮はデータロスが必要(非ロスレス)なため、同じ画像のPNGと同じ検索設定を使用して確実に一致するわけではありません。
Parameters: パラメーターは、CaptureScreen
に2つの方法で渡すことができます。最大3つの順序付けられたプロパティを渡すか、オプションのプロパティリストを渡すことができま す。
順序付けられたプロパティの渡し方
順序付けられたプロパティを使用する場合、この順序で表示する必要があります:
- ファイル名
- Rectangle
- shouldIncrement(増分番号を追加するかどうか。)
CaptureScreen
によって保存されるデフォルトのファイル形式はPNGです。画像のファイル形式、スケール、またはJPG圧縮品質を変更するには、順序付けられたパラメーターを使用する代わりにプロパティリストを渡すか、関連するグローバルプロパティの1つを使用します(CaptureScreenImageFormat, CaptureScreenScaleFactor, CaptureScreenJPGCompressionQuality)#### プロパティリストの渡し方
プロパティリストを渡すこと
オプションのプロパティリストと共に提供されるプロパティキーを使用すると、ファイル名、キャプチャ矩形を定義し、ファイル名が増分であるかどうかを選択することができます。これは、順序付けられたプロパティを渡すときと同じように行うことができます。しかし、これには、 プロパティリストとして画像関連情報を渡し、スクリーンショットのファイル形式、スケール、圧縮品質を設定する機能が追加されます。
FileName
(または同義語ImageName
またはName
): デフォルト: "Screen_Capture". 画像ファイル名とオプションのパス情報。Rectangle
(またはRect
): 座標ペア。デフォルト: リモート画面全体. このプロパティキーを使用して、キャプチャしたいリモート画面のエリアの左上と右下の角を示す座標ペアを渡します。Increment
: ブール値。デフォルト: オフ。 画像に自動的に増分番号を追加するかどうか。このプロパティはブール値を取ります:true
またはfalse
、yes
またはno
。 増分は、スクリプト内で複数のスナップショットをキャプチャしている場合(ループや頻繁に呼び出されるハンドラーのような場合)に便利です。画像はすべて同じ画像名を持つことができ、増分番号がそれらを区別します。そうでなければ、各画像は同じ名前の前の画像を上書きします。 スクリプト内 (ループ内や頻繁に呼び出されるハンドラ内など) で複数のスナップショットをキャプチャする場合、増分が役立ちます。すべてのイメージに同じイメージ名を付けて、増分された番号で区別することができます。そうしないと、各イメージが同じ名前を持つ前のイメージを上書きしてしまいます。ImageInfo
: 画像プロパティリスト。 画像情報を提供したい場合、ImageInfo
を使用してプロパティリス ト経由でパラメータを渡すのが良い方法です。ImageFormat
: PNG、JPG、または TIFF。デフォルト: PNG.CaptureScreen
によって使用されるファイル形式を変更します。オプションには、PNG
、JPG
、TIFF
が含まれます。ScaleFactor
: 0-1。デフォルトは1 (フルサイズ)。 これにより、画像の解像度を削減しながら比例的に画像をスケールすることができます。例えば、ScaleFactor
を .5 に設定すると、画像の寸法 (高さと幅の両方) が半分になります。これは画像検索に使用されるスケールファクターとは異なります。検索目的でキャプチャした画像のスケール方法の詳細については、Finding Images ページの Image Scaling を参照してください。JPGCompressionQuality
: 0-100。デフォルト: 100 (無圧縮; 可能な限り非可逆). JPG 形式のスクリーンショットの圧縮品質をCaptureScreen
コマンドで調整します。数字は圧縮中に保持される画像品質のレベルを示し、0% は画像データの損失が多い低品質、100 は圧縮が可能な限り100% の元の品質を保持することを意味します。
構文:
CaptureScreen {fileName {, rectangle {, shouldIncrement}}}
CaptureScreen optionsPropertyList
Returns: キャプチャしたスクリーンショットのフルパスは、Result Commandを使用してアクセスできます。
例:オプションのプロパティリストと共に CaptureScreen
を呼び出す
この例では、キャプチャするスクリーンショットの名前、キャプチャエリアの矩形 (一つの角の座標と他の角の画像によって定義) を渡します。また、Increment
の値を true に設定することで、キャプチャされたスクリーンショットは増分的に名前付けされます。
CaptureScreen {Name: "ImageFileName", Rectangle: [[67, 33], imagelocation("OtherCorner")], increment:true}
この例では、the SuiteInfo functionを使用してスクリーンショットの保存用の画像パスを定義し、キャプチャ rectangle
を定義します。
CaptureScreen {name:SuiteInfo().ImagesFolder & slash & "CurrentLogo", rectangle:["WelcomeImage", "Border"]}
この例では、ImageFormat
、ScaleFactor
、および JPGCompressionQuality
プロパティを使用して、画像ファイルの種類、サイズ、品質を調整します。また、スクリーンショットの名前を "RegressionTest" という変更しない名前と現在の日付を使用して名付けします。
CaptureScreen {name: "RegressionTest" & today, rectangle: ["TLImage","BRImage"], imageFormat: JPG, scaleFactor: .75, JPGCompressionQuality: 85}
例:順序付けされたパラメータを使用して CaptureScreen
を呼び出す
この例では、順序付けされたパラメータを使用して CaptureScreen
を呼び出す方法を示しています。すべての三つのパラメータを渡し、保存する画像の名前と場所を最初の fileName パラメータとして宣言し、次に Rectangle パラメータとしてキャプチャするエリアの左上と右下の角を定義する座標のリストを渡し、最後に shouldIncrement パラメータとして "true" を渡します。
CaptureScreen "~/Documents/ScreenCaptures/TestScreenshot", [58,579,714,736], true