2016-11-03 8 views
2

@BeforeSuiteアノテーションで条件が満たされた場合、テストスイート全体を終了する方法はありますか?おそらく、@AfterSuiteを呼び出してテスト全体をバイパスする方法ですか?TestNG - 条件が満たされた場合、BeforeSuiteアノテーションからテストスイート全体を強制終了する方法

私は@BeforeSuiteでデータベース呼び出しを行います。クエリが結果を返す場合は、電子メールを送信して、今度はテストスイート全体を強制終了したいと考えています。

私はSystem.exit(1);org.testng.Assert.fail("There are unpaid invoices");を試しましたが、どちらもスイート全体を終了しませんでした。私のスクリプトは、クラスを並行して実行するように設定されています。そして、test.xmlファイルからテストを実行すると、各クラスはウィンドウを開けようとしてからすぐに閉じます。

FYIでは、ドライバは@BeforeClassまたは@BeforeMethod(パラレルメソッドまたはクラス用に作成したスイッチに応じて)まで作成されません。したがって、すべての現実において、ブラウザウィンドウを開こうとするべきではありません。

+1

try SkipException( "message");提供された条件が真でない場合、テストはスキップされます。 – Shek

+0

そうですよ!私は実際にそれを別のテストのどこかで使って、それを忘れてしまった。ありがとう –

答えて

3

try new SkipException("message");これは、指定された条件が真でない場合、テストをスキップします。

0

beforesuiteアノテーション方法で次のコードを試して、スイートの実行モードがY/Nであることを確認してください。それはNだ場合は、新しいskipException(「希望のメッセージ」)を投げる例外

を投げる

のtryとcatchブロックでスキップの例外をキャッチしない念頭に置いて、それを保管してください。そうでなければ、そのスイート内のテストケースの実行のためにスキップ例外を投げた後に移動します。例外

package com.qtpselenium.suiteA; 

import org.testng.SkipException; 
import org.testng.annotations.BeforeSuite; 

import com.qtpselenium.base.TestBase; 
import com.qtpselenium.util.TestUtil; 

public class TestSuiteBase extends TestBase{ 


    @BeforeSuite 
    public void checksuiteskip(){ 


      //Initialize method of Test BASE Class to Initialize the logs and all the excel files 
      try { 
       Initialize(); 
      } catch (Exception e) { 
       e.printStackTrace(); 
      } 
      App_Logs.debug("checking run mode of SuiteA"); 
      if(!TestUtil.isSuiterunnable(suitexlsx, "suiteA")){ 

       App_Logs.debug("Run mode for SuiteA is N"); 
       throw new SkipException("Run mode for suiiteA is N"); 


      }else 

       App_Logs.debug("Run mode for SuiteA is Y"); 


     } 


    } 
関連する問題