0

TestNG + Selenium(Chrome WebDriver)を使用したテストの並列実行に問題があります。基本的に、私のテストは実際には並行して実行されているようには見えません。TestNGとSeleniumの並列実行の問題

達成しようとしています。 データがExcelスプレッドシートから読み込まれています。 TestSuite.java内のすべてのテストケースは、別々のWebDriverインスタンス(パラレルで実行中)のすべてのデータ行に対して実行する必要があります。例えば。別々のブラウザウィンドウで同時に5つのログイン/パスワードの組み合わせをテストします。

簡体イラスト:

public class TestSuite { 
    private String param; 

    @DataProvider 
    public static Object[][] provider() { 
     return new Object[][] {{"1"},{"2"}}; 
    } 

    @Factory(dataProvider = "provider") 
    public TestSuite(String data) { 
     this.param = data; 
     System.out.println(String.format("[Thread: %d] TestSuite (%s)", Thread.currentThread().getId(), param)); 
     // Can't initialise webdriver instances here, different thread 
    } 

    @BeforeClass 
    public void init() { 
     System.out.println(String.format("[Thread: %d] BeforeClass (%s)", Thread.currentThread().getId(), param)); 
     // This is where I'm retrieving webdriver instances 
    } 

    @Test 
    public void TC_001() { 
     System.out.println(String.format("[Thread: %d] TC_001 (%s)", Thread.currentThread().getId(), param)); 
    } 

    @Test 
    public void TC_002() { 
     System.out.println(String.format("[Thread: %d] TC_002 (%s)", Thread.currentThread().getId(), param)); 
    } 
} 

TestNG.xml:

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" > 
<suite name="Suite" parallel="instances" group-by-instances="true"> 
    <test name="Test"> 
    <classes> 
     <class name="TestSuite" /> 
    </classes> 
    </test> 
</suite> 

出力:

[Thread: 1] TestSuite (1) 
[Thread: 1] TestSuite (2) 
[Thread: 11] BeforeClass (1) 
[Thread: 11] TC_001 (1) 
[Thread: 11] TC_002 (1) 
[Thread: 12] BeforeClass (2) 
[Thread: 12] TC_001 (2) 
[Thread: 12] TC_002 (2) 

主な問題ここで私のテストは明確に逐次実行されています。誰でも私が間違っていたことを説明することができますか?上記で説明した望ましい結果を達成するための正しいアプローチは何ですか?

スイート名=「スイート」平行=「方法」基インスタンスごと=「true」を以下のようにTestNG.xmlのメソッドとして

答えて

0

メイク平行

関連する問題