JAVA自动化(四)--TestNG注解

前言

本篇为JAVA自动化的第四篇章,主要为TestNG基础使用
主要讲述后续自动化中能够使用得部分,如果想了解更多可以查看官方文档
学习条件:JAVA基础部分,注解基本使用

TestNG介绍

TestNG(Testing Next Generation)是一个单元测试框架,它提供了丰富的注解来帮助我们更加方便的编写和管理被测项目的测试类和测试方法。

  • 提供用例组织与执行
  • 提供丰富的断言方法
  • 提供丰富的日志和报告信息

Maven相关配置:https://mvnrepository.com 在此网站找到相关版本,或者直接复制下方

<dependency>
    <groupId>org.testng</groupId>
    <artifactId>testng</artifactId>
    <version>7.0.0</version>
    <scope>test</scope>
</dependency>

TestNG常用注解

忽略

在测试过程中,不希望执行此方法,可以添加忽略标签来跳过此方法

@Test(enable = false)
package testng;

import org.testng.annotations.Test;

public class label {
    /**
     * test1将不会执行
     */

    @Test(enabled = false)
    public void test1(){
        System.out.println("执行测试->1");
    }

    @Test
    public void test2(){
        System.out.println("执行测试->2");
    }

    @Test
    public void test3(){
        System.out.println("执行测试->3");
    }
}

依赖

测试的某个方法依赖于另一个方法

@Test(dependsOnMethods={"otherMethod"})
package testng;


import org.testng.annotations.Test;

public class label {

/**
执行顺序:
1.先执行被依赖的方法---otherMethod
2.执行没有被以来的方法
3.最后执行需要依赖的测试方法---thisMethod
*/
    @Test(dependsOnMethods = {"test3"})
    public void test1(){
        System.out.println("执行测试->1");
    }

    @Test
    public void test2(){
        System.out.println("执行测试->2");
    }

    @Test
    public void test3(){
        System.out.println("执行测试->3");
    }
}
超时

超时表示如果自动化测试中超过了执行的毫秒数,那么TestNG会中止它,并且标记为失败

@Test(timeout=1000)  //标记为1000毫秒
package testng;

import org.testng.annotations.Test;

public class label {
    /**
     * test1超时执行失败
     */

    @Test(timeOut = 1000)
    public void test1() throws InterruptedException {
        Thread.sleep(1100);
        System.out.println("执行测试->1");
    }
}
优先级

设置优先级,指定用例的执行顺序

@Test(priority = 0)
package testng;

import org.testng.annotations.Test;

public class label {
    /**
     * test2优先执行,数字越小优先级越高,默认级别为0
     */

    @Test(priority = 1)
    public void test1(){
        System.out.println("执行测试->1");
    }

    @Test(priority = 0)
    public void test2(){
        System.out.println("执行测试->2");
    }
}
执行次数

指定执行的次数

@Test(invocationCout = 3)
package testng;

import org.testng.annotations.Test;

public class label {
    /**
     * test1执行三次
     */

    @Test(invocationCount = 3)
    public void test1() {
        System.out.println("执行测试->1");
    }
}
Before和After

在测试开始前执行和开始后执行

package testng;

import org.testng.annotations.BeforeTest;
import org.testng.annotations.Test;

/**
 * Before 和 After 注解 ,用例执行前,用例执行后
 *  @BeforeSuite:带注释的方法将在该套件中的所有测试运行之前运行。
 *  @AfterSuite:带注释的方法将在此套件中的所有测试运行后运行。
 *  @BeforeTest:带注释的方法将在属于<test>标记内的类的任何测试方法运行之前运行。
 *  @AfterTest:在<test>标记内属于类的所有测试方法运行后,将运行带注释的方法。
 *  @BeforeGroups:此配置方法将在之前运行的组列表。这个方法保证在属于这些组中的任何一个的第一个测试方法被调用之前运行。
 *  @AfterGroups:此配置方法将在后面运行的组列表。该方法保证在属于这些组中的任何一个的最后一个测试方法被调用后不久运行。
 *  @BeforeClass:带注释的方法将在调用当前类中的第一个测试方法之前运行。
 *  @AfterClass:带注释的方法将在当前类中的所有测试方法运行之后运行。
 *  @BeforeMethod:带注释的方法将在每个测试方法之前运行。
 *  @AfterMethod:带注释的方法将在每个测试方法之后运行。
*/
public class beforeAfterDemo {
    /**
     * 前置操作---记录时间,读取资源......
     */
    @BeforeTest
    public void log(){
        System.out.println("记录");
    }

    @Test
    public void test(){
        System.out.println("测试->1");
    }
    /**
     * 后置操作---记录时间,关闭资源......
     */

}
TestNG参数化
//标记参数
@DataProvider(name = "设置的名字")
//使用此参数
@Test(dataProvider = "指定的名字")
package testng;

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

public class DataProviderDemo {
    /**
     * 当需要多个参数时,可以使用@DataProvider,设置
     * 这里使用登录举例
     */
    @Test(dataProvider = "datas")
    private void testLogin(User user) {
        System.out.println();
    }

    @DataProvider
    public Object[] datas() {
        User user1 = new User("KAI1", "123");
        User user2 = new User("KAI2", "456");
        User user3 = new User("KAI3", "135");
        return new Object[]{user1,user2,user3};
    }
}
package testng;

public class User {
    private String username;
    private String password;

    public User() {
    }

    public User(String username, String password) {
        this.username = username;
        this.password = password;
    }

    @Override
    public String toString() {
        return "user{" +
                "username='" + username + '\'' +
                ", password='" + password + '\'' +
                '}';
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }
}

结尾

本篇简单介绍了testNG的注解用法,主要为后续JAVA自动化中做准备,想要详细了解可以前往官网查看

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值