TestNg学习

TestNG是一个测试框架,可以简化广泛的测试需求。

  1. 建立工程

首先我们在idea中应该新建一个project,并选择“maven”,点击下一步(如下图)

填写groupId(一般为包名)和ArtifactId(一般为工程名)
在这里插入图片描述
2. 添加依赖

创建成功后:我们需要在pom中添加testng依赖,然后点击自动更新maven

<dependencies>
    <dependency>
        <groupId>org.testng</groupId>
        <artifactId>testng</artifactId>
        <version>6.9.8</version>
        <scope>test</scope>
    </dependency>
</dependencies>
  1. 代码编写

下面是一个简单的例子:

import org.testng.annotations.Test;
public class Test1 {
@Test
public void test1()
{
System.out.println(“hello testng”);
}
}

  1. 运行结果
    在这里插入图片描述
    输出如下:我们可以看到用TestNG方式执行,输出内容相对全一些,会显示执行了多少个,失败了多少个,通过了多少个

TestNG相关注释

注释

注释介绍

@BeforeSuite

在此套件中的所有测试运行之前,将运行带注释的方法。

@AfterSuite

在此套件中的所有测试运行后,将运行带注释的方法。

@BeforeTest

在运行属于<test>标记内的类的任何测试方法之前,将运行带注释的方法。

@AfterTest

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

@BeforeClass

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

@AfterClass

在运行当前类中的所有测试方法之后,将运行带注释的方法。

@BeforeMethod

每次调用@Test方法之前运行,即执行用例之前进行的初始化

@AfterMethod

每次调用@Test方法之后运行

@DataProvider

标志着一个方法,提供数据的一个测试方法。注解的方法必须返回一个Object[] [],其中每个对象[]的测试方法的参数列表中可以分配。

该@Test 方法,希望从这个DataProvider的接收数据,需要使用一个dataProvider名称等于这个注解的名字。
@invocationCount
测试用例被调用执行的次数
@threadPoolSize
开启的线程数

TestNG的数据驱动

什么是数据驱动:指的是一个脚本固定的情况下,用数据来控制该脚本是否运行,以及运行的次数,和每次运行时对应的参数

实现方式:@DataProvider

@DataProvider的简单使用(该注释需要定义属性name):

@Test测试用例,属性dataProvider需要指定对应的数据提供者名称

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

public class Test1 {
    @DataProvider(name="testcase")
    public Object[][] dp()
    {
        return new Object[][]{
                {"小红","90"},
                {"小明","80"}

        };
    }

    @Test(dataProvider = "testcase")
    public void test1(String n1,String n2)
    {
        System.out.println(n1 + " " + n2);
    }
}

这样我们的输出结果如下图:可以看到testcase被执行了2次。
在这里插入图片描述
延迟数据提供者:

延迟初始化指的是:当我们获取了一个数据,对他执行测试方法,然后就废弃这个数据对象,在测试下一个对象。

延迟初始化的思想其实指的是当你真正需要一个对象时才创建它,而不是提前去创建它

实现延迟初始化,TestNg允许我们从数据提供者返回一个Iterator对象,而不是一个二维对象数组。

举个简单的例子:

public interface Iterator<E> {
    boolean hasNext();
    E next();
}


  import java.util.Iterator;
    
    public class AccoutIterator implements Iterator{
    
        private int index = 0;
        static private final int MAX = 4;
    
        @Override
        public boolean hasNext() {
            return index<MAX;
        }
        @Override
        public Object next() {
            return new Object[]{
                    "Hello!"+(index++)
            };
        }
    public void remove() {
        throw new UnsupportedOperationException("remove");
    }
}


import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
import java.util.Iterator;
public class Test1 {

    @DataProvider(name = "iterator")
    public Iterator<Object[]> iteratorDataProvider(){
        return new AccoutIterator();

    }

    @Test(dataProvider = "iterator")
    public void test1(String name)
    {
        System.out.println(name);
    }

}

看看我们的输出结果:
在这里插入图片描述
忽略测试

有时候测试用例还没准备好, 可以给测试用例加上@Test(enable = false), 来禁用此测试用例

@Test(enabled = false)
public void test1()
{
    System.out.println("ignore");
}

依赖测试

如下图,我们test1的运行依赖于test2,所以如果我们只运行test1的话,会先运行依赖的测试用例,在运行自己

import org.testng.annotations.Test;

public class Test1 {
    @Test(dependsOnMethods = {"test2"})
    public void test1()
    {
        System.out.println("我依赖于test2");
    }
    @Test
    public void test2()
    {
        System.out.println("test2");
    }
}

运行结果如下图所示:
在这里插入图片描述
TestNG官方文档:https://testng.org/doc/documentation-main.html#parameters-testng-xml
TestNG官方文档推荐一个入门级别的TestNG视频教程:http://www.iqiyi.com/w_19rth5swkd.html

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值