2021-02-18 testng注解说明

TestNG是一个开源自动化测试框架。类似于JUnit(特别是JUnit 4),但它不是JUnit框架的扩展。它的灵感来源于JUnit。它的目的是优于JUnit,尤其是在用于测试集成多类时。

1.Testng注解

@BeforeSuite

在该套件的所有测试都运行在注释的方法之前,仅运行一次。

@AfterSuite

在该套件的所有测试都运行在注释方法之后,仅运行一次。

@BeforeClass

在调用当前类的第一个测试方法之前运行,注释方法仅运行一次。

@AfterClass

在调用当前类的第一个测试方法之后运行,注释方法仅运行一次。

@BeforeTest

注释的方法将在属于<test>标签内的类的所有测试方法运行之前运行。

@AfterTest

注释的方法将在属于<test>标签内的类的所有测试方法运行之后运行。

@BeforeGroups

配置方法将在之前运行组列表。 此方法保证在调用属于这些组中的任何一个的第一个测试方法之前不久运行。

@AfterGroups

配置方法将在之前运行组列表。 此方法保证在调用属于这些组中的任何一个的第一个测试方法之后不久运行。

@BeforeMethods

注释方法将在每个测试方法之前运行。

@AfterMethod

注释方法将在每个测试方法之后运行。

@Factory

将一个方法标记为工厂,返回TestNG将被用作测试类的对象。 该方法必须返回Object []。

@Lensteners

定义测试类上的侦听器。

@Test

将类或方法标记为测试的一部分。

套件:一起运行的多个测试类。

2.使用注释/注解的好处

  • TestNG通过查找注释/注解来识别感兴趣方法,方法名称不限于任何模式或格式。

  • 可以将其他参数传递给注释。

  • 测试类不再需要扩展任何东西。

3.注解的作用范围和执行顺序

@BeforeSuite
@BeforeTest
@BeforeClass
@BeforeMethod
@Test
@AfterMethod
@AfterClass
@AfterTest
@AfterSuite
@BeforeMethod
@Test
@AfterMethod
……
若有父类,每个注解都是先父类后子类
@BeforeClass
@BeforeMethod
@Test
@AfterMethod
@AfterClass
@BeforeMethod
@Test
@AfterMethod
……
……

  • 一个项目只有一个<suite>。

  • @BeforeSuite 和 @BeforeTest :以项目为单位,只运行一次。可以有多个,顺序按照testng.xml里面<class>的顺序。

  • @BeforeClass:以类为单位,本类中Test执行完之后就after(一个类一般为一个测试用例)。

  • @BeforeMethod:以方法为单位,每执行一个@Test就执行一次。

  • 执行某一组<group>必须在<classes>里面写组内存在的方法所在<class>。@BeforeGroups后必须标明groups的名字。

    代码块
    Java
    <suite name="Suite">
        <test verbose="5" preserve-order="true" name="/Users/xx/Testng_test">
            <groups><run><include name="g"></include></run></groups>
            <classes>
            //下面两个类中有g组的方法
                    <class name="Test.TestClass">
                    //执行制定的方法
                    		 <methods><include name="Test1"></include></methods>
                    </class>
                    <class name="Test.MethodClass"></class>
             </classes>
        </test>
    </suite>

    所有类

    类内

    方法

    siute

    test

    class

    method

tips

  • 若存在父类先执行父类的。

  • 制定一个测试方法执行:1⃣️直接点击方法左侧的小箭头运行。2⃣️class标签内加method标签,定义include/exclude方法。

  • 若@Test失败还是会执行@AfterXXX内容,一般用于释放资源。

4.@Test中的常用参数

  • @Test(groups =“XXXX”):定义这个测试方法所属组。

  • @Test(enabled =“false”):规定这个测试方法暂不执行。

  • @Test(dependsOnGroups =“XXXX”):定义依赖组,也就是让某个组的方法先执行然后再执行本方法。

  • @Test(dependsOnMethod =“XXXX”):定义依赖方法,让某个方法执行完再执行本方法。如果依赖方法失败,这个方法也失败。

  • @Test(timeOut = XX ):设置测试的超时时间,单位是ms。如果超时则定义用例执行失败。

  • @Test(invocationCount = XX):设置本测试用例被调用的次数。

  • @Test(invocationTimeOut = XX):设置调用count次一共耗时不得超过的时间。

  • @Test(alwaysRun = true):设置本方法始终执行,用于被覆盖情况下。

  • @Test(priority = true):设置测试用例的优先级,0最先运行。

  • @Test(expectedExceptions = 异常类.class):测试用例中如果抛出定义的异常,则成功。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值