Data Provider Run in Parallel Execution


Data providers can run in parallel with the attribute parallel

Lets create java class

package testngexp;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
publicclass dpparallelexp {

@DataProvider(name="dpparallel",parallel=true)

public Object[][] loginData(){
returnnew Object[][]{
{"testApp","Apptest"},
{"testpro","Protest"},
{"testAgile","agiletest"}
};
}

@Test(dataProvider="dpparallel")
publicvoid getLogindata(String username,String Pwd){
System.out.println("User name -->"+username+" Password --->"+Pwd);
}
}

TestNG.xml

<?xmlversion="1.0"encoding="UTF-8"?>
<!DOCTYPEsuiteSYSTEM"http://testng.org/testng-1.0.dtd">
<suitename="Suite"parallel="none"verbose="1"timeOut="1000">
<testname="Test1">
<classes>
<classname="testngexp.dpparallelexp" />
</classes>
</test><!-- Test -->
</suite><!-- Suite -->


Results

image

DataProvider with Parallel thread count

Parallel data providers running from an XML file share the same pool of threads, which has a size of 10 by default. You can modify this value in the <suite> tag of your XML file

Lets create a java class
package testngexp;
import java.io.File;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.ie.InternetExplorerDriver;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;

publicclass dpparallelexp {
protected WebDriver driver;
@DataProvider(name="dpparallel",parallel=true)
public Object[][] loginData(){
returnnew Object[][]{
{"firefox"},
{"ie"},
{"chrome"}
};
}

@Test(dataProvider="dpparallel")
publicvoid getLogindata(String browser) throws InterruptedException{
if (browser.equalsIgnoreCase("firefox")){
driver=new FirefoxDriver();
Thread.sleep(500);
}
if (browser.equalsIgnoreCase("ie")){
File file = new File("E:\\software\\selenium\\IEDriverServer_Win32_2.40.0\\IEDriverServer.exe");
System.setProperty("webdriver.ie.driver", file.getAbsolutePath());
DesiredCapabilities caps = DesiredCapabilities.internetExplorer();
caps.setCapability(
InternetExplorerDriver.INTRODUCE_FLAKINESS_BY_IGNORING_SECURITY_DOMAINS,
true);
String URL="https://qamain1b.qa.gtnexus.com/";
driver = new InternetExplorerDriver(caps);
}
if (browser.equalsIgnoreCase("chrome")){
System.setProperty("webdriver.chrome.driver", "E:\\software\\selenium\\Chromev28\\chromedriver.exe");
driver = new ChromeDriver();
}
driver.get("https://www.irctc.co.in/eticketing/loginHome.jsf");
}
}

TestNG.xml file

<?xmlversion="1.0"encoding="UTF-8"?>
<!DOCTYPEsuiteSYSTEM"http://testng.org/testng-1.0.dtd">
<suitename="Suite"verbose="1"data-provider-thread-count="30">
<testname="Test1">
<classes>
<classname="testngexp.dpparallelexp"/>
</classes>
</test><!-- Test -->
</suite><!-- Suite -->

Here, we should use data-provider-thread-count attribute
By default,data-provider-thread-count is 10. You can modify this value in the <suite> tag of your XML file

Comments