java TestNG

用TestNG来设计测试用例执行流程
1、编写 testng.xml 文件;
2、设计测试套件:所谓套件就是将所有测试类整理在一块儿,形成一套测试用例
3、设计测试:测试集,就是测试类的集合,一般可以把一个小模块当作一个test测试集来设计
4、设计:此test下的所有测试类
5、设计:对应相关的测试类,

testng.xml 文件结构

<?xml version="1.0" encoding="UTF-8" ?>
<!-- 测试套件:一个或多个测试集构成 -->
<suite name="Suite" parallel="false">
    <!-- 测试集:多个类构成 -->
    <test name="register">
        <!-- 测试类集合: -->
        <classes>
            <!-- 对应的每个测试类:一个或多个方法组成 -->
            <class name="com.zhuchun.testtestng.Tester"/>
            <class name="com.zhuchun.testtestng.Tester2"/>
        </classes>
    </test>
</suite>

注解执行顺序

Tester.beforesuite()
Tester.beforetest()
Tester.beforeclass()
Tester.beforemethod()
Tester.test()
Tester.aftermethod()
Tester.afterclass()
Tester.aftertest()
Tester.aftersuite()

常用注解
(配置类型注解)
1、@BeforeSuite、@AfterSuite:在某个测试套件(suite)开始之前/之后运行
2、@BeforeTest、@AfterTest:在某个测试(test)开始之前运行/在某个测试下的所有测试方法执行之后运行
3、@BeforeClass、@AfterClass:在某个测试类开始之前运行/在某个测试类中的所有测试方法执行之后运行
4、@BeforeMethod、@AfterMethod:在某个测试方法之前运行/在某个测试方法执行之后运行

1、@Test 注解:表示是一条测试用例;多条时默认执行顺序是字典顺序
2、@Parameters 注解:可以将在 testng.xml 文件中配置的注入到测试方法
3、@DataProvider注解:数据提供者(同时提供多组测试数据),测试方法引用数据提供者时需要指定数据提供者的名字或类名(@Test(dataProvider = "bb")),定义的数据提供者(@DataProvider(name = "aa");@DataProvider(name = "bb"))
4、@Test(dependsOnMethods = {"a2"}):依赖测试,被此定义的测试方法,需要在 a2 方法执行之后才能执行
5、@Test(enabled = false):忽略测试,被此注解的方法被跳过执行

分组测试(只想执行个别或者某一部分的测试用例)
1、测试用例方法指定groups

package com.zhuchun.testtestng;

import org.testng.annotations.Test;

public class GroupDemo {
    @Test(groups = {"g1"})
    public void a1(){
        System.out.println("IgnoreDemo.a1()");
    }
    @Test
    public void a2(){
        System.out.println("IgnoreDemo.a2()");
    }
    @Test(groups = {"g1"})
    public void a3(){
        System.out.println("IgnoreDemo.a3()");
    }
    @Test
    public void a4(){
        System.out.println("IgnoreDemo.a4()");
    }
}

2、在testng.xml的test中指定相应测试类
3、在test的groups里面指定run下要执行的分组

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Suite" parallel="false">
    <test name="register">
        <groups>
            <run>
                <!-- 指定要执行的组 -->
                <include name="g1"></include>
            </run>
        </groups>
        <classes>
            <class name="com.zhuchun.testtestng.GroupDemo"/>
        </classes>
    </test>
    <parameter name="browserType" value="Chrome"></parameter>
</suite>

4、当测试用例越来越多,有些分组不想执行,设置方式也是一样:在test的groups里面指定run下不需要执行的分组

参数化测试(数据驱动测试)
两种方式想测试方法传递参数

  • 利用 testng.xml 定义 parameter
  • 利用 DataProviders