TestNG
​
​
​
​
​
​
​
​
​
​
​
​
​
Parallel Execution In TestsNG
​
​
What Is Parallel Execution In TestNG ?
​
TestNG allows to run the multiple tests simultaniously rather than one after another.Not only tests, even methods,classes and instances can be run in parallel.
​
In .xml an attribute parallel is used to run the tests in parallel.
The value of this attribute have to specified as per requirement.
​
Values taken by attribute parallel :
-
methods - It will run all test methos of classes in parallel.
-
classes - It will run all the classes present inside <classes> tag in parallel.
-
tests - It will run all the test cases present within <test> tag in parallel
-
instances - It will run all the test cases of that instance in parallel.
​
Threads in testNG :
Threads implies the division of test execution in modules to run in parallel.
In testNG an attribute thread-count that accepts an interger type value, is used in .xml to achieve multithreading.
The number of threads depends on the number test cases.
Syntax :
<test name="Paralel-Tests" parallel="classes" thread-count="2">
​
* The deafault value of thread-count is '5' ,hence there's no need to specify thread-count, if the number of test casses is below 5.
​
Example of method execution in parallel :​
<test name="Paralel-Tests" parallel="methods">
Write test methods to run simultaniously :
​
package testNGexamples;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.testng.annotations.Test;
public class ParallelMethods {
WebDriver driver;
@Test
public void chromeTest() {
System.setProperty("webdriver.chrome.driver", "..\\TestNGSelenium\\drivers\\chromedriver99.exe");
driver = new ChromeDriver();
driver.close();
}
@Test
public void firefoxTest() {
System.setProperty("webdriver.gecko.driver", "..\\TestNGSelenium\\drivers\\geckodriver.exe");
driver = new FirefoxDriver();
driver.close();
}
}
Create .xml for parallel execution :
​
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Parallel Test-Suite">
<test name="Paralel-Tests" parallel="methods">
<classes>
<class name="testNGexamples.ParallelMethods"></class>
</classes>
</test>
</suite>
​
​
Example of method execution in parallel :
<test name="Paralel-Tests" parallel="classes" thread-count="2">
Create two classes to run parallely :
Class1 :
​
package testNGexamples;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.testng.annotations.Test;
public class Class1 {
WebDriver driver;
@Test
public void chromeTest() {
System.setProperty("webdriver.chrome.driver", "..\\TestNGSelenium\\drivers\\chromedriver99.exe");
driver = new ChromeDriver();
driver.quit();
}
}
​
Class2 :
​
package testNGexamples;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.testng.annotations.Test;
public class Class2 {
WebDriver driver;
@Test
public void firefoxTest() {
System.setProperty("webdriver.gecko.driver", "..\\TestNGSelenium\\drivers\\geckodriver.exe");
driver = new FirefoxDriver();
driver.quit();
}
}
​
.xml :
​
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Parallel Test-Suite">
<test name="Paralel-Tests" parallel="classes" thread-count="2">
<classes>
<class name="testNGexamples.Class1"></class>
<class name="testNGexamples.Class2"></class>
</classes>
</test>
</suite>
​
Parallel testing at suite level :
We can run all the tests inside the suite at the same time with the value of parallel attribute changed to tests.
Example :
<suite name="Parallel Test-Suite" parallel="tests" thread-count="3">
​
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Parallel Test-Suite" parallel="tests" thread-count="3">
<test name="Paralel-Tests-1">
<classes>
<class name="testNGexamples.Class1"></class>
</classes>
</test>
<test name="Paralel-Tests-2">
<classes>
<class name="testNGexamples.Class3"></class>
<class name="testNGexamples.Class4"></class>
</classes>
</test>
</suite>
​
​
​
​
Refer next page Invocation Count In TestNG
​
​
​