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のメソッドとして