2016-09-27 5 views
0

私はC#を使用してSelenium Webdriverでオートメーションを学習しようとしています。私は自分のカスタムメソッドAssertを持っています。私はtry-catchを使用しているAssertFailedExceptionをキャッチした後にテストを継続するためにやったことは以下の私のコードSelenium C#が失敗すると続行します

public static void assert(string value, IWebElement element) 
    { 
     try 
     { 
      Assert.AreEqual(value, element.Text); 
     } 
     catch (AssertFailedException e) 
     { 
      Console.WriteLine(e.Message.ToString()); 
     } 
    } 

私の問題は、それがすべてAssertFailedExceptionをキャッチしている(私の目標である)が、テストの結果は、Visual Studioで渡されています。私の質問は、ConsoleにExceptionsが含まれている場合、どのようにContinue on Failureを実装し、テストに失敗するかです。事前にみんなありがとう!

+0

カスタムメソッド内に 'AssertFailedException'をキャッチしないでください。 try catchブロックを削除します。 –

+0

catchブロックにブール変数を割り当て、テストの最後に同じ値を使用してテストに失敗します。 –

+0

@SudharsanSelvaraj 'try catch'ブロックを削除すると、' Assert'メソッドが失敗したときにテストの実行を停止します。私が必要とするのは、実行が終了するまでテストを続けることです。ありがとうございました! – creulo

答えて

0

マイナーチェックにassertの代わりにverifyを使用してみることができます。 Assertはデフォルトでメジャーチェックポイントを示し、スクリプトの実行は失敗したときに終了し、その例外を検出した場合はレポートは無視されます。これは予想される動作です。ただし、ベリファイはスクリプトが失敗しても続行できることを示します。この場合、失敗したステップが報告され、スクリプトは続行されます。

単純に言えば、スクリプトが失敗した場合にスクリプトを続行しないようにする場合はassertを使用し、スクリプトが失敗を報告して続行する場合はverifyを使用します。

+0

今、私はAssertが本当に何をしているのか理解しています。 'verify'メソッドをどうやって作るのですか? :) – creulo

0

私が理解する限り、あなたのテストの中でいくつかのチェックを行い、最後に失敗したかどうかを判断したいと思います。これを実現するためにカスタムコードを書く必要があるかもしれません。

internal class Assertion 
{ 
    private readonly string title; 
    private readonly object expected; 
    private readonly object actual; 

    public Assertion(string title, object expected, object actual) 
    { 
     this.title = title; 
     this.expected = expected; 
     this.actual = actual; 
    } 

    public bool IsMatch() 
    { 
     return this.actual == this.expected; 
    } 

    public override string ToString() 
    { 
     return $"Title: {title}. Expected: {expected}. Actual: {actual}"; 
    } 
} 

テストが実行されている、あなたはAssertionクラスの新しいインスタンスを作成し、リストに保存します。たとえば、クラスAssertionを導入することができます。テストの最後に、次のメソッドを使用できます。

private static void VerifyAssertions(Assertion[] assertions) 
    { 
     var failedAssertions = assertions.Where(a => !a.IsMatch()).ToArray(); 
     if (failedAssertions.Any()) 
     { 
      throw new AssertFailedException(string.Join<Assertion>("; ", failedAssertions)); 
     } 
    } 
+0

非常に素晴らしいロジックとコード。私は今これを試し、あなたに結果を報告します。大変ありがとうございます@oldbam – creulo

関連する問題