2016-08-09 5 views
0

私の要件は次のとおりです。Selenium-メソッドを一度実行し、クラスのすべての@Testメソッドの戻り値を使用します。

  1. アプリケーションにログインし、システムプロパティメニューを開いてプロパティの値を返します。
  2. アプリケーションの別のメニューを開き、上記の手順で返された値に基づいてテストシナリオを実行します。

問題は、同じクラスの@Testメソッドごとに、ステップ1と2の両方を実行する必要があります。これは時間がかかり、不要です。 「ステップ1」から取得されたプロパティは、クラス内のテストの実行中は同じになります。

テスト開始時に「ステップ1」を一度だけ実行して、を1回だけ実行し、それに続くクラスのすべての@Testメソッドに返されるプロパティ値を使用できますか?私はdependsOnMethods注釈ではなく、それは私が探しています解決策であるかどうかを確認で確認

P.S-。

+1

クラスレベルで 'public 'フィールドを作成し、step1の値を代入して他のすべての場所で使用してみませんか? – Siva

+0

@Siva、手順1の値を返すメソッドに使用する注釈はありますか?小さな構文で? – DeeJay007

+0

私は注釈で作業したことはありません。私はいつもカスタマイズされたフレームワークでしか働いていませんでした。 – Siva

答えて

1

JUnitを使用している場合は、@BeforeClassが探しているようです。このアノテーションを持つメソッドはクラスごとに1回だけ実行され、返された値はすべてグローバル変数に格納できます。または、それがあなたに適している場合は、@Beforeアノテーション(各テストの前に実行)を検討することもできます。

他のテストフレームワークも同様の考え方を使用します。

+0

「@BeforeClass」が私が探しているものかもしれません。 'testng.xml'ファイルに@BeforeClassのメソッド名を含めるべきですか? – DeeJay007

+0

私の要件のための '@BeforeClass'アノテーションは実際には必要ありません。 @ Sivaのように、パブリックフィールドを作成し、ステップ1の値を割り当てることで自分の要件が解決されます。ステップ1のメソッドは '@Test'アノテーションで指定する必要があり、testng.xmlとテスト仕様に追加する必要があります。 – DeeJay007

+0

私は@/Sivaに同意し、ステップ1の結果をすべてのメソッドで使用可能なグローバル変数に割り当てることが正しいです。しかし、あなたが他のどのクラスでも使うつもりでないならば、 'public'ではなく' private'にしてください。また、@Before ...アノテーションは理由があります。 '@ Test'でstep1を実行すると、テストが実行される順序が保証されません。 '@ BeforeClass'は、クラス内のどこに配置されていても常に最初に実行されるため、方法です。詳細については、このチュートリアルを参照してください[リンク](http://www.tutorialspoint.com/testng/testng_execution_procedure.htm)。 – JDelorean

関連する問題