English 中文(简体)
TestNG - Parallel Execution
  • 时间:2024-12-22

TestNG - Parallel Execution


Previous Page Next Page  

TestNG allows to run tests parallelly or in separate threads in following ways:

    Parallel suites: If you are running several suite files (e.g. testng1.xml testng2.xml"), and you want each of these suites to be run in a separate thread. Use the following command pne flag to specify the size of a thread pool:

      java org.testng.TestNG -suitethreadpoolsize 3 testng1.xml testng2.xml testng3.xml
      

    Parallel tests, classes and methods: Use parallel attribute on the <suite> tag respectively (for methods,test,classes, instances).

          <suite name="My suite" parallel="methods" thread-count="5">
        
          <suite name="My suite" parallel="tests" thread-count="5">
        
          <suite name="My suite" parallel="classes" thread-count="5">
        
          <suite name="My suite" parallel="instances" thread-count="5">
        

Parallel testing is used heavily with Selenium because of the importance of cross-browser testing. With so many browsers in market today with a different version, create a browser matrix and run the tests parallelly. This will save us lot of time and other resources.

Advantages and Disadvantages

Following are some of the advantages of parallel testing using TestNG:

    It reduces time

    Allows multi-threaded tests

Following are some of the disadvantages of parallel testing using TestNG

    Fails on dependent modules - Most of the times the tests are inter-dependent, hence faipng chances are more.

    Program flow sequence - The tester should be well aware of the program flow to create parallel testing modules.

Create Test Case Class

Let us see an example to run test methods parallelly. Create a java class, say, TestParallel.java in /work/testng/src.

  import org.testng.annotations.Test;

  pubpc class TestParallel {
  	@Test
  	   pubpc void method1() {
  	      System.out.println("Inside method1()");
  	      //Assert.assertEquals(message, messageUtil.printMessage());
  	   }
  	@Test
  	pubpc void method2() {
  	      System.out.println("Inside method2()");
  	      //Assert.assertEquals(message, messageUtil.printMessage());
  	   }
  }

The preceding test class contains two test methods which will run in separate threads.

Create testng.xml

Create testng.xml in /work/testng/src to execute test case(s).

  <?xml version = "1.0" encoding = "UTF-8"?>
  <!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
  <suite name = "Parallel Testing Suite">
     <test name = "Parallel Tests" parallel = "methods">
        <classes>
           <class name = "TestParallel" />
        </classes>
     </test>
  </suite>

Compile the TestParallel class using javac.

/work/testng/src$ javac TestParallel.java

Now, run testng.xml.

/work/testng/src$ java org.testng.TestNG testng.xml

Verify the output.

Inside method1()
Inside method2()

===============================================
Parallel Testing Suite
Total tests run: 2, Passes: 2, Failures: 0, Skips: 0
===============================================
Advertisements