データプロバイダーからデータを受信する単一のテストがあります。このテストをデータプロバイダーからの異なる値と並行して実行したいと思います。
私は次のようなアプローチを試しました:
public class IndependentTest
{
@Test(dataProvider = "dp1" ,threadPoolSize=3,invocationCount=1)
public void testMethod(int number)
{
Long id = Thread.currentThread().getId();
System.out.println("HELLO : " + id);
}
@DataProvider(name = "dp1",parallel=true)
public Object[][] dp1() {
return new Object[][] {
new Object[] { 1 },
new Object[] { 2 },
new Object[] { 3 },
new Object[] { 4 },
new Object[] { 5 },
new Object[] { 6 },
new Object[] { 7 },
new Object[] { 8 }
};
}
}
私が受け取った出力は:
ハロー:10
ハロー:12
こんにちは:17
ハロー:11
こんにちは:16
こんにちは:14
こんにちは:13
こんにちは:15
スレッドプールサイズに5を指定しているときに10スレッドを生成しました。データプロバイダーのスレッドプールサイズを制御するために、上記のスニペットに何を追加する必要があるか教えてください。
dataproviderthreadcount
を使用する必要があります。 threadpoolsize
とinvocationcount
の値は必要ありません。詳細はこちら こちら 。
次の方法でスレッドプールを設定してみます。
@BeforeClass
public void setupClassName(ITestContext context) {
context.getCurrentXmlTest().getSuite().setDataProviderThreadCount(5);
context.getCurrentXmlTest().getSuite().setPreserveOrder(false);
}
Testng.xmlでは、data-provider-thread-count="3"
を使用してデータプロバイダーのスレッド数を設定できます
<suite name="Manage" data-provider-thread-count="3" >
<test name="Manage data tests">
<classes>
<class name="uk.example.ExampleTest"></class>
</classes>
</test>
</suite>
これを実現するには、定義にDataProviderの名前と共に 'parallel = true'設定を追加します。次に例を示します。
@DataProvider(name="InvalidLoginDataProvider", parallel = true)
public Object[][] myDataProviderMethod(){
...
...
}
TestNGドキュメントに従って、@ Testスレッドプール(@TestのinvocationCountパラメータとthreadPoolSizeパラメータを使用して作成)とデータプロバイダスレッドプールは異なり、管理方法も異なります。
したがって、データプロバイダーのスレッドプールにあるスレッドの数を指定するには、testng.xmlファイルに次の構成を追加する必要があります。
<suite name="Suite1" data-provider-thread-count="20" >
...
...
</suite>
HTH!
こんにちは私はデータプロバイダーのスレッド数で処理しようとすると、エラーを下回っています。問題の解決方法
Java.lang.IllegalStateException:BasicClientConnManagerの無効な使用:接続がまだ割り当てられています。別の接続を割り当てる前に、必ず接続を解放してください。
私はそれを注釈レベルで設定する方法があると思います、それはDataProviderに追加する必要があります:
@DataProvider(name="quick-screen-list", parallel = true)
public Object[][] quickScreenDataProvider() {
.....