TestNG用法总结

TestNG用法总结

  • 常用注解见表格
注解 描述
@BeforeSuite 注解的方法将只运行一次,运行所有测试前此套件中。
@AfterSuite 注解的方法将只运行一次此套件中的所有测试都运行之后。
@BeforeClass 注解的方法将只运行一次先行先试在当前类中的方法调用。
@AfterClass 注解的方法将只运行一次后已经运行在当前类中的所有测试方法。
@BeforeTest 注解的方法将被运行之前的任何测试方法属于内部类的 标签的运行。
@AfterTest 注解的方法将被运行后,所有的测试方法,属于内部类的标签的运行。
@BeforeGroups 组的列表,这种配置方法将之前运行。此方法是保证在运行属于任何这些组第一个测试方法,该方法被调用。
@AfterGroups 组的名单,这种配置方法后,将运行。此方法是保证运行后不久,最后的测试方法,该方法属于任何这些组被调用。
@BeforeMethod 注解的方法将每个测试方法之前运行。
@AfterMethod 被注释的方法将被运行后,每个测试方法。
@DataProvider 标志着一个方法,提供数据的一个测试方法。注解的方法必须返回一个Object[] [],其中每个对象[]的测试方法的参数列表中可以分配。该@Test 方法,希望从这个DataProvider的接收数据,需要使用一个dataProvider名称等于这个注解的名字。
@Factory 作为一个工厂,返回TestNG的测试类的对象将被用于标记的方法。该方法必须返回Object[]。
@Listeners 定义一个测试类的监听器。
@Parameters 介绍如何将参数传递给@Test方法。
@Test 标记一个类或方法作为测试的一部分。
  • TestNG的简单使用
package com.test;

import org.testng.annotations.BeforeClass;
import org.testng.annotations.*;

public class Testng01 {
    @BeforeClass
    public void test() {
        System.out.println("11111111111");
        
    }
    @Test
    public void test2() {
        System.out.println("22222222222222");
        
    }
    @AfterClass
    public void test3() {
        System.out.println("333333333333");
    }

}

xml:


    
        
            
        
    
  • 运行结果如图:


    运行结果
  • 组测试
    组测试即为在进行测试时可以通过testng.xml来指定执行相关的命名的组,使用@Test(groups = {"name"})注解来指定名称
    如下代码所示:
package com.test;

import org.testng.annotations.Test;

public class TestngLearn01 {
    
    @Test(groups = {"systemtest"})
    public void test1() {
        System.out.println("this is test learn01");
    }
    @Test(groups = {"functiontest"})
    public void test2() {
        System.out.println("this is test learn02");
    }
}

xml:


   
      
         
      
   
   
      
   

  • 忽略测试
    使用@Test(enabled = false)来说明该这个case不需要执行

代码:

package com.test;

import org.testng.annotations.Test;

//testng忽略测试
public class TesgNGIgnore {
    
    @Test(enabled = false)
    public void testIgnore1() {
        System.out.println("这条测试信息被忽略");
    }
    
    @Test
    public void testIgnore2() {
        System.out.println("这条测试用来验证是否被忽略");
    }

}
  • 异常测试
    在工作总可能会碰到需要这个方法抛出什么样的异常来的测试,此时使用异常测试

代码:

package com.test;

import org.testng.annotations.Test;

//异常测试
public class ExceptionTest {
    
    @Test(expectedExceptions = IllegalArgumentException.class,expectedExceptionsMessageRegExp="NullPoint")
    public void testException() {
        throw new IllegalArgumentException("NullPoint");
    }
}

  • 依赖测试
    如代码所示:
package com.test;

import org.testng.annotations.Test;

/**
 * 如果setupEnv成功执行则会执行testMessage;
 * 如果setupEnv未成功执行则不会执行testMessage。
 * **/
public class DependsTest {
       @Test
        public void setupEnv(){
            System.out.println("this is setup Env");
           // throw new RuntimeException(); 若setupEnv执行失败则会跳过testMessage
        }
        
        @Test(dependsOnMethods = {"setupEnv"})
        public void testMessage(){
            System.out.println("this is test message");
        }

}

  • 参数化测试01
    testng.xml 方式使代码和测试数据分离,方便维护
package com.test;

import org.testng.annotations.Parameters;
import org.testng.annotations.Test;

/**
 * 
 * testng.xml 方式使代码和测试数据分离,方便维护
 * TestNG参数化测试01
 * */
public class ParametricTesting01 {
    @Test
    @Parameters({"test1","test2"})
    public void ParaTest(String test1,String test2) {
        System.out.println("This is " + test1 + test2);
    }

}

xml:

 
    
    
    
        
            
              
    
  • 参数化测试02
    通过DataProvider传递参数,注意传递参数时参数是按照传参的顺序排列的参数组
package com.test;

import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;

/**
 * 
 * 通过DataProvider传递参数
 * TestNG参数化测试02
 * */
public class ParametricTesting02 {
    
        
        @DataProvider(name = "username")
        public Object[][] Users(){
            return new Object[][] {
                {"root "," password"},
                {"test "," heqq"},  
                {"qq "," he"}
            };
        }
        
    @Test(dataProvider = "username")
    public void user(String name,String password) {
        System.out.println("My name is " + name +"but my password is" + password);
    }
}

全部的xml:





   
      
         
      
   
   
      
   
   


    
        
            
        
    
    
    
    
    
        
            
              
    



你可能感兴趣的:(TestNG用法总结)