2017-11-30 3 views
3

私はいくつかのセレンコードを実行するtestNGスイートを持っています。私は持っているwebappのページ間のナビゲーションをテストしています。 4種類のユーザーレベルがあり、ユーザーの種類に基づいて制限付きページにアクセスできます。私はまた、ChromeとIEの両方でこれをテストする必要があります。@BeforeTestメソッドが、以前のテストの最後の要素として報告されることがあるのはなぜですか?

私はtestng.xmlセットアップのためにMkyong.com tutorialに従っています。

すべてのユーザーと両方のブラウザのすべてのナビゲーションテストを1つのtestng.xmlで収集することを選択しました。これは合計8つのテストクラスを提供します.4と4はテストが実行される前に同じ構成クラスが実行されます。

testng.xml:

<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" > 
<suite name="Releaseboard Local tests" parallel="none"> 


    <test name="user1 chrome"> 
     <classes> 
      <class name="testsuite.ChromeConfig" /> 
      <class name="testcase.User1NavigationTests" /> 
     </classes> 
    </test> 
    <test name="user2 chrome"> 
     <classes> 
      <class name="testsuite.ChromeConfig" /> 
      <class name="testcase.User2NavigationTests" /> 
     </classes> 
    </test> 
    <test name="user3 chrome"> 
     <classes> 
      <class name="testsuite.ChromeConfig" /> 
      <class name="testcase.User3NavigationTests" /> 
     </classes> 
    </test> 
    <test name="user4 chrome"> 
     <classes> 
      <class name="testsuite.ChromeConfig" /> 
      <class name="testcase.User4NavigationTests" /> 
     </classes> 
    </test> 


    <test name="user1 ie"> 
     <classes> 
      <class name="testsuite.IeConfig" /> 
      <class name="testcase.User1NavigationTests" /> 
     </classes> 
    </test> 
    <test name="user2 ie"> 
     <classes> 
      <class name="testsuite.IeConfig" /> 
      <class name="testcase.User2NavigationTests" /> 
     </classes> 
    </test> 
    <test name="user3 ie"> 
     <classes> 
      <class name="testsuite.IeConfig" /> 
      <class name="testcase.User3NavigationTests" /> 
     </classes> 
    </test> 
    <test name="user4 ie"> 
     <classes> 
      <class name="testsuite.IeConfig" /> 
      <class name="testcase.User4NavigationTests" /> 
     </classes> 
    </test> 
</suite> 

今、私はこれらのテストを実行したとき、私はすべての8つのテストクラスのために、この出力を期待:

enter image description here

彼らは赤であればそれは問題ではありません。またはグリーンですが、XMLからのすべてのテストタグが2つのレベルを開始し、常に同じレベルになることを期待しています。示された3つ以上のレベルもありますが、この時点では問題にはなりません。

ただし、出力が次のレベル2になることがあります。これは、前のレベル1に表示されることがあります。@BeforeTest注釈付きメソッドに失敗します。前のテストの中で失敗した後に実際にレベル1でテストを実行するので、それ自体はそれほど悪くないでしょう。ただし、テストが前のテストの中に表示されている場合は、レベル1の@BeforeTestでも常に失敗し、すべてのレベル3のテストメソッドは自動的にスキップされます。下の画像を参照してください。最後に、時間とラインのすべての

enter image description here

はスクリーンショットから、実際のラインです。残りは匿名性のために編集されています。

私の@BeforeTestメソッドと@AfterTestメソッド、setupとtearDownは何らかの理由でテストとしてリストされていることに注意してください。どちらも実際のテスト方法がなく、間違ったテストの内側に、そして実際には、実際のテスト方法で突然、次の内部にあります。これらのエラーは毎回完全にランダムに表示されます。常に次のテストを含む特別なテストはありません。時にはそれらの3つ、時には1つだけがあります。一貫して唯一のことは、それが決して連続して2つではないということです。私は本当にここで何が起こっているのか分かりません。私はより説明したり、より多くの研究をしたいと思っていますが、私はこの問題を検索可能な用語にまで煮詰めています。私はそれが私にそれに恩恵を与えることができるまで、答えられないかもしれないという気持ちがあります。

誰もが見たいと思う他のコード例を投稿しますが、今はどこから始めたらいいかわかりません。

答えて

1

私の質問に対する答えのようですが、これは@BeforeTest注釈付きメソッドが失敗したときに起こることです。言い換えれば、セットアップとティアダウンが以前のテストの階層構造の中に現れているという事実は、おそらくtestNGの面でのマイナーな報告ミスです。これはエラーの原因ではありません。エラーの原因とスキップされたテストは、私の場合、不安定なセットアップ方法の結果です。時には時にはうまくいかないという事実は、時折見つけられたり読み込まれたりしていた、私のページの敏感な小さな条件付き要素によるものでした。

+0

これは実際の問題ではなく、表現上の問題である可能性があると私は正確に考えていました。 –

関連する問題