TestNG - 并行执行


TestNG 允许通过以下方式并行或在单独的线程中运行测试:

  • 并行套件:如果您正在运行多个套件文件(例如 testng1.xml testng2.xml”),并且您希望每个套件在单独的线程中运行。使用以下命令行标志来指定线程池的大小:

      java org.testng.TestNG -suitethreadpoolsize 3 testng1.xml testng2.xml testng3.xml
      
  • 并行测试、类和方法:分别 在<suite>标记上使用并行属性(对于方法、测试、类、实例)。

          <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">
        

由于跨浏览器测试的重要性,并行测试大量使用 Selenium。当今市场上有如此多的浏览器具有不同的版本,因此创建一个浏览器矩阵并并行运行测试。这将为我们节省大量时间和其他资源。

的优点和缺点

以下是使用 TestNG 并行测试的一些优点:

  • 它减少了时间

  • 允许多线程测试

以下是使用 TestNG 并行测试的一些缺点

  • 依赖模块失败 - 大多数时候测试是相互依赖的,因此失败的机会更多。

  • 程序流程顺序 - 测试人员应该充分了解创建并行测试模块的程序流程。

创建测试用例类

让我们看一个并行运行测试方法的示例。在/work/testng/src中创建一个 java 类,例如TestParallel.java

  import org.testng.annotations.Test;

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

前面的测试类包含两个测试方法,它们将在单独的线程中运行。

创建testng.xml

在/work/testng/src中创建 testng.xml以执行测试用例。

  <?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>

使用 javac 编译 TestParallel 类。

/work/testng/src$ javac TestParallel.java

现在,运行 testng.xml。

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

验证输出。

Inside method1()
Inside method2()

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