ユーザー コード リファレンス:バリデーション

Validate(バリデーション)クラスで提供されるメソッドを使用した場合、テスト実行時にバリデーションが失敗すると例外を出力します。ユーザーコードを使用した場合、例外をキャッチし、何かしらの処理をおこなうなどの対応が必要になります。

上記において、例外をキャッチせずにメソッドの戻り値によってテストの成功・失敗を判断する方法があります。イメージとしては、過去の記事(ユーザー コード リファレンス:知っておきたいRanorex API)で紹介したRepoItemInfoクラスのExists() メソッドのように、戻り値として、オブジェクトの検出結果に対してtrue/falseを返す方法になります。

※本記事で紹介しているRanorex APIは、Ranorex v9.3.2にて確認をおこなっています。

※ユーザー コードの機能概要については、こちらの記事をご参照ください。

※本記事で紹介しているRanorex APIについては、API ドキュメントをご参照ください。

以下のユーザーコードは、レコーディングモジュールのアクションテーブルに設定したバリデーション(AttributeEqual)のアクションをユーザーコードに自動変換したものになります。このコードを実行してバリデーション(Validate.AttributeEqual)が失敗した場合、例外を出力します。

public void Validate_WelcomeTaro(RepoItemInfo textInfo)
{
  Report.Log(ReportLevel.Info, "Validation", "Validating AttributeEqual (Text='Welcome, taro!') on item 'textInfo'.", textInfo);
  Validate.AttributeEqual(textInfo, "Text", "Welcome, taro!");
}

上記のコードにあるバリデーションの結果(成功/失敗)を戻り値として受け取るには、以下のコードのようにメソッド(Validate.AttributeEqual)にパラメータ―を追加します。

public void Validate_WelcomeTaro(RepoItemInfo textInfo)
{
  Report.Log(ReportLevel.Info, "Validation", "Validating AttributeEqual (Text='Welcome, taro!') on item 'textInfo'.", textInfo);

  Validate.AttributeEqual(textInfo, "Text", "Welcome, taro!", "{0}", false);
}
  • 第1パラメーター:バリデーション対象のオブジェクト(型:RepoItemInfo クラス)
  • 第2パラメーター:バリデーション対象の属性名(型:string
  • 第3パラメーター:期待する値(型:string
  • 第4パラメーター:レポートのMessage項目に出力される情報(型:string
  • 第5パラメーター:例外をスローするかを指定(型:Boolean)

※第4パラメーターでは、プレースホルダーとして、{0}(オブジェクト名)、{1}(属性名)、{2}(属性値)、{3}(期待値)を指定することができ、また任意の文字列を指定することもできます。

※第5パラメーターにおいて、falseを指定することで例外をスローすることができます。

これにより、メソッドの戻り値(型:Boolean)として、バリデーションの結果が成功の場合はtrueを返し、失敗の場合はfalseを返すようになります。以下は、コード例になります。

public void Validate_WelcomeTaro(RepoItemInfo textInfo)
{
  Report.Log(ReportLevel.Info, "Validation", "Validating AttributeEqual (Text='Welcome, taro!') on item 'textInfo'.", textInfo);

  if( Validate.AttributeEqual(textInfo, "Text", "Welcome, taro!", "expected : {2} / actual : {3}", false))
  {
    Report.Log(ReportLevel.Success, "Validation", "Success");
  }else{
    Report.Log(ReportLevel.Failure, "Validation", "Failure");
  }
}

レポート(バリデーション結果:成功)

レポート(バリデーション結果:失敗)

またバリデーションの失敗時に、スクリーンショットを取得したい場合は、Validate.AttributeEqual(RepoItemInfo, String, Object, String, Validate.Options)メソッドを使用することで対応できます。以下、コード例になります。

public void Validate_WelcomeTaro(RepoItemInfo textInfo)
{
  Report.Log(ReportLevel.Info, "Validation", "Validating AttributeEqual (Text='Welcome, taro!') on item 'textInfo'.", textInfo);

  // オプション指定
  Validate.Options options = new Validate.Options();
  // 例外をスロー
  options.ExceptionOnFail = false;
  // バリデーションの失敗時にスクリーンショットを取得
  options.ReportScreenshot = Validate.ResultOption.OnFail;

  if( Validate.AttributeEqual(textInfo, "Text", "Welcome, taro!", "expected : {2} / actual : {3}", options))
  {
    Report.Log(ReportLevel.Success, "Validation", "Success");
  }else{
    Report.Log(ReportLevel.Failure, "Validation", "Failure");
  }
}

※今回、紹介したバリデーション(AttributeEqual)以外のメソッドについては、Ranorex APIドキュメント(Validate クラスのメソッド一覧)をご参照ください。