Testng中注释简介

注释

@Before和@After 注释

这两个就比较多,一般用于在测试构件上。关于测试构件以后详细介绍,测试构件一般有测试之前的操作和测试运行之后的清除数据的操作

Before分类有@BeforeSuite,@BeforeTest, @BeforeGroups,@BeforeClass,@BeforeMethod
After分类有@AfterSuite,@ AfterTest, @AfterGroups,@ AfterClass,@ AfterMethod

每个注释的范围不同而已

举例:

package com.java.learn;  
  
import org.testng.annotations.AfterClass;  
import org.testng.annotations.BeforeClass;  
import org.testng.annotations.Test;  
  
  
/** 
 * create by Anthony on 2017/10/29 
 */  
public class TestNG_Demo1 {  
  
    @BeforeClass  
    public void setUp(){  
        System.out.println("启动测试的前提条件准备,一般放这个方法中");  
    }  
  
    @AfterClass  
    public void tearDown(){  
        System.out.println("测试运行结束后的步骤,一般是恢复环境到测试开始之前的状态");  
    }  
    @Test  //执行测试
    public void test1(){  
  
        System.out.println("Hello");  
    }  
  
}  

@DataProvider注释

标记一个方法是用来给其他测试方法提供数据的方法。要求该方法必须返回是object[][]

@Factory

标记这个方法是一个工厂,方法必须返回的是一个对象

@Listeners

在一个测试方法上定义一个监听。例如Selenium自动化测试中需要用到这个事件监听功能,方便我们输出日志

@Parameters

描述了如何给一个测试方法传提参数

例子:

package com.java.learn;  
  
import com.sun.tracing.ProviderName;  
import org.testng.annotations.*;  
  
  
/** 
 * create by Anthony on 2017/10/29 
 */  
public class TestNG_Demo1 {  
  
    @Test  
    @Parameters({"Browser", "Server"})  
    public void test1(String browser, String server){  
        System.out.println("Hello");  
        System.out.println("这次启动浏览器是: "+browser+" 测试服务器地址是: "+server);  
    }  
}  

项目根目录下的testng.xml内容如下

  
  
  
      
      
      
        
            
           
  
        
       
  

@Test

在@Test下有很多选项可以设置,例如用例之间的依赖关系等

@Test注释下的属性

属性timeOut

字面意思就是超时判断,如果哪个测试方法需要监听执行的时间,那么就可以考虑采用timeOut属性,监控时间的功能。

例如,实际的接口测试中,加入登录接口时间不能超过3秒中。下面来看看如何监控这个方法如果运行时间超过3秒就抛出异常

package com.java.learn;  
  
import org.testng.annotations.Test;  
  
/** 
 * create by Anthony on 2017/10/31 
 */  
public class TimeoutTest {  
  
    @Test(timeOut = 3000)  
    public void loginTest(){  
        try{  
            Thread.sleep(3100);  
        }catch (InterruptedException e){  
            System.out.println(e.toString());  
        }  
  
    }  
}  

运行下这个Testng测试用例,看是否抛出异常

Testng中注释简介_第1张图片
image.png

更改下Thread.sleep(2800);再次运行,看看效果

Testng中注释简介_第2张图片
image.png

属性enabled

在Testng中,如果方法前面添加了@Test注释,然后没有其他的属性,那么默认这个用例会被自动运行。在@Test注释中提供了一个enabled的属性,可以临时去修改该条用例不被执行。Enable属性有两个值true和false

不让test2用例执行

package com.java.learn;  
  
import org.testng.annotations.Test;  
  
/** 
 * create by Anthony on 2017/10/31 
 */  
public class TestNG_Demo2 {  
  
    @Test  
    public void test1(){  
        System.out.println("test1");  
    }  
  
    @Test(enabled=false)  
    public void test2(){  
        System.out.println("test2");  
    }  
  
    @Test  
    public void test3(){  
        System.out.println("test3");  
    }  
  
    @Test  
    public void test4(){  
        System.out.println("test3");  
    }  
}  

属性priority

一个类文件下的测试用例按照我们设想的顺序去执行,而不是默认按照方法名的字母排序去执行

@Test注释中有一个属性,叫priority支持设置用例的优先级。如果不带这个属性,默认priority是等于0,而且priority值越小,优先级越高

例子:设置的优先顺序是test4->test3->test1->test2

package com.java.learn;  
  
import org.testng.annotations.Test;  
  
/** 
 * create by Anthony on 2017/10/31 
 */  
public class TestNG_Demo2 {  
  
    @Test(priority = 2)  
    public void test1(){  
        System.out.println("test1");  
    }  
  
    @Test(priority = 4)  
    public void test2(){  
        System.out.println("test2");  
    }  
  
    @Test(priority = 1)  
    public void test3(){  
        System.out.println("test3");  
    }  
  
    @Test  
    public void test4(){  
        System.out.println("test4");  
    }  
}  

属性invocationCount和invocationTimeOut

属性和timOut差不多,只不过是监控运行多次同一个用例的总耗时是否达到设置的最大值。

  • invocationCount

字面意思就是调用的次数统计,这个属性是的英文解释是:The number of times this method should be invoked. 就是这个测试用例被调用执行的次数。说明这个属性可以设置一个用例可以重复跑多次。

  • invocationTimeOut

字面意思是调用的超时,看看英文的解释:The maximum number of milliseconds this test should take for thecumulated time of all the invocationcounts. This attribute will be ignored ifinvocationCount is not specified.这句话,说了两个意思,第一个是设置一个最大的毫秒数来计算执行多次后总共耗时多少,耗时值不能超过设置的最大毫秒数。第二个意思是说,这个属性是和invocationCount结合使用才会工作

代码举例:设置了执行次数数5次,5次执行总共耗时不能超过5100毫秒,否则抛出中断异常

package com.java.learn;  
  
import org.testng.annotations.Test;  
  
/** 
 * create by Anthony on 2017/10/31 
 */  
public class TimeoutTest {  
  
    @Test(invocationCount = 5, invocationTimeOut = 5100)  
    public void loginTest() throws InterruptedException{  
  
        Thread.sleep(1000);  
        System.out.println("login test");  
  
    }  

你可能感兴趣的:(Testng中注释简介)