TestNG - 并行执行

  • 简述

    TestNG 允许以下列方式并行或在单独的线程中运行测试:
    • Parallel suites: 如果您正在运行多个套件文件(例如 testng1.xml testng2.xml”),并且您希望这些套件中的每一个都在单独的线程中运行。使用以下命令行标志来指定线程池的大小:
      
        java org.testng.TestNG -suitethreadpoolsize 3 testng1.xml testng2.xml testng3.xml
        
    • Parallel tests, classes and methods: 分别在<suite>标签上使用parallel属性(对于方法、测试、类、实例)。
      
            <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 进行并行测试的一些缺点
    • 依赖模块失败 - 大多数情况下,测试是相互依赖的,因此失败的机会更多。
    • 程序流程顺序 - 测试人员应该非常了解创建并行测试模块的程序流程。
  • 创建测试用例类

    让我们看一个并行运行测试方法的例子。创建一个java类,比如说,TestParallel.java/work/testng/src.
    
      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

    在中创建 testng.xml /work/testng/src 执行测试用例。
    
      <?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
    ===============================================