top of page

TestNG Tutorial

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 class execution in parallel :

<test name="Paralel-Tests" parallel="classes" thread-count="2">


Create two classes to run in parallel =>
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'.

<suite name="Parallel Test-Suite" parallel="tests" thread-count="3">

Example :

<!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
bottom of page