Parallel Test Execution In TestNG [Parallel Execution & MultiThreading]
Parallel Test Execution In TestNG:
There are situations where we want to run multiple tests with same or different browsers at the same time. In such cases, we can use “parallel” attribute in testng.xml to accomplish parallel test execution in TestNG
The parallel attribute of suite tag can accept four values:
tests – All the test cases inside <test> tag of testng.xml file will run parallel
classes – All the test cases inside a java class will run parallel
methods – All the methods with @Test annotation will execute parallel
instances – Test cases in same instance will execute parallel but two methods of two different instances will run in different thread.
let us look at example of Parallel Test execution in TestNG.
In the below program, I took two methods. First methods opens Firefox driver and navigate to https://www.softwaretestingmaterial.com and closes the browser. Second methods opens Chrome driver and navigate to the same URL and closes the browser.
package softwareTestingMaterial; import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome.ChromeDriver; import org.openqa.selenium.firefox.FirefoxDriver; import org.testng.annotations.Test; public class ParallelTests { @Test public void getFirefox(){ //System.setProperty("webdriver.gecko.driver", "geckodriver.exe path"); System.setProperty("webdriver.gecko.driver", "D://Selenium Environment//Drivers//geckodriver.exe"); System.out.println("GetFirefox Method is running on Thread : " + Thread.currentThread().getId()); WebDriver driver = new FirefoxDriver(); driver.get("https://www.softwaretestingmaterial.com"); driver.close(); } @Test public void getChorme(){ //System.setProperty("webdriver.chrome.driver", "chromedriver.exe path"); System.setProperty("webdriver.chrome.driver", "D://Selenium Environment//Drivers//chromedriver.exe"); System.out.println("GetChrome Method is running on Thread : " + Thread.currentThread().getId()); WebDriver driver = new ChromeDriver(); driver.get("https://www.softwaretestingmaterial.com"); driver.close(); } }
testng.xml file without mentioning parallel attribute:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd"> <suite name="softwaretestingmaterial"> <test name="testngTest"> <classes> <class name="softwareTestingMaterial.ParallelTests" /> </classes> </test> </suite>
After running the testng.xml using the above mentioned code, first you could see the firefox browser in action and then you can see the chrome driver in action.
To run both the browsers in parallel, use the below code in your testng.xml file.
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd"> <suite name="softwaretestingmaterial" parallel="methods" thread-count="2"> <test name="testngTest"> <classes> <class name="softwareTestingMaterial.ParallelTests" /> </classes> </test> </suite>
Once you run the testng.xml using the above code, you could see both the browsers in action at a time.
Here in the above testng.xml file, I have passed parallel=methods and thread-count=2 at the suite level. I would like to execute selenium scripts in parallel in different threads. Most of the times, these two methods will execute in different threads. Thread Id may vary on every run. Here we are just passing thread count but we are not assigning any thread id, assigning thread id will be taken care by your system processor.
You could find the complete TestNG tutorial here.
Here I have hand-picked few posts which will help you to learn more interview related stuff:
- TestNG Interview Questions
- Explain Test Automation Framework
- Test Automation Framework Interview Questions
- SQL Interview Questions
- Manual Testing Interview Questions
- Agile Interview Questions
- Why You Choose Software Testing As A Career
- General Interview Questions
If you have any more question, feel free to ask via comments. If you find this post useful, do share it with your friends on Social Networking.
Hi , Parllel test execution is not working ..
What the issue Diya
Thank you for the b’ful blog.
Just for interview wanted to know what all challenges we face in parallel execution. If there any related to static keyword or AUTOIT/Robot class. Please help me out that how to tackle it?
Hi Raj, you have not mentioned the topic of priority in testng topics. Will you include it later on?
Hi Deepika, Here is the link for your reference.