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内容如下

<?xml version="1.0" encoding="UTF-8"?>  
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">  
<suite name="Default Suite">  
    <parameter name="Browser" value="Chrome" />  
    <parameter name="Server" value="https://www.baidu.com" />  
    <test name="Java_Learn">  
      <classes>  
          <class name="com.java.learn.TestNG_Demo1"/>  
         <!-- 添加不同测试类文件 -->  
  
      </classes>  
    </test> <!-- Java_Learn -->  
</suite> <!-- Default Suite --> 

@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测试用例,看是否抛出异常

image.png

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

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");  
  
    }  
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,457评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,837评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,696评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,183评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,057评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,105评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,520评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,211评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,482评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,574评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,353评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,213评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,576评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,897评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,174评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,489评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,683评论 2 335

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,497评论 18 139
  • 感谢原作者的奉献,原作者博客地址:http://blog.csdn.net/zhu_ai_xin_520/arti...
    狼孩阅读 13,933评论 1 35
  • 小小的人啊, 短短数月,你已经有了自己的想法 昨晚我和爸爸去吃饭 你竟然要用手去抓火锅里冒出的烟气 多想告诉你, ...
    阳花木易为春阅读 131评论 0 0
  • 童心,在我眼里就是单纯的。即使你客观理智,当对某一些方面有纯粹的心,都可以被称为童心未泯。 世界是不存在的,社会是...
    李大仙儿的精神世界阅读 388评论 0 0