TestNG忽略测试、分组、异常测试、依赖测试、参数化

忽略测试

添加属性@Test(enabled = false )

package com.course.testng;

import org.testng.annotations.Test;

public class IgnoreTest {
    @Test(enabled = false)
    public void ignore1(){
        System.out.print("第一个,执行");
    }
    @Test
    public void ignore2(){
        System.out.print("第二个,执行");
    }
}

组测试

如何分组

分组:@Test(groups="组名")

package com.course.testng.groups;

import org.testng.annotations.AfterGroups;
import org.testng.annotations.BeforeGroups;
import org.testng.annotations.Test;


public class GroupOnMethod {
    @Test(groups = "server")
    public  void test1() {
        System.out.println("这是服务端测试方法1");
    }
    @Test(groups = "server")
    public  void test2() {
        System.out.println("这是服务端测试方法2");
    }
    @Test(groups = "client")
    public  void test3() {
        System.out.println("这是客户端测试方法3");
    }
    @Test(groups = "client")
    public  void test4() {
        System.out.println("这是客户端测试方法4");
    }

    @BeforeGroups("server")
    public void beforeClientGroups(){
        System.out.println("-----前------");
    }

    @AfterGroups(groups = "server")
    public void afterClientGroups(){
        System.out.println("-----后------");
    }
}

套件中组的使用

直接给类增加Test,增加组名

package com.course.testng.groups;

import org.testng.annotations.Test;

@Test(groups = "stu")
public class GroupClass1 {


    public  void stu_one() {
        System.out.println("执行方法:class1-stu_one");
    }

    public  void stu_two() {
        System.out.println("执行方法:class1-stu_two");
    }
}
package com.course.testng.groups;

import org.testng.annotations.Test;

@Test(groups = "teacher")
public class GroupClass3 {
    public void teacher1(){
        System.out.println("执行:teacher1");
    }
    public void teacher2(){
        System.out.println("执行:teacher2");
    }
}

xml文件中添加:groups,run,include标签

<?xml version="1.0" encoding="CESU-8" ?>
<suite name="suitename">
    <test name="runall">
        <classes>
            <class name="com.course.testng.groups.GroupClass1"/>
            <class name="com.course.testng.groups.GroupClass2"/>
            <class name="com.course.testng.groups.GroupClass3"/>
        </classes>
    </test>
    <test name="runstu">
        <groups>
            <run>
                <include name="stu"/>
            </run>
        </groups>
        <classes>
            <class name="com.course.testng.groups.GroupClass1"/>
            <class name="com.course.testng.groups.GroupClass2"/>
            <class name="com.course.testng.groups.GroupClass3"/>
        </classes>
    </test>
</suite>

异常测试

什么时候会用到异常测试:

在我们期望结果为某个异常的时候

比如:我们传入某些不合法的参数,抛出了异常(也就是说预期结果就是异常)

package com.course.testng;

import org.testng.annotations.Test;

public class ExcepctedException {
    @Test(expectedExceptions = RuntimeException.class)
    public void runTimeFaild(){
        System.out.println("这是一个失败的异常测试");
    }

    @Test(expectedExceptions = RuntimeException.class)
    public void runTimeSuccess(){
        System.out.println("这是一个成功的异常测试");
        throw new RuntimeException();
    }
}

依赖测试

使用Test的属性:dependsonmethods

作用:前置条件

package com.course.testng;

import org.testng.annotations.Test;

public class DependTest {
    @Test
    public void test1(){
        System.out.println("test1 run");
        throw new RuntimeException();
    }
    @Test(dependsOnMethods = {"test1"})
    public void test2(){
        System.out.println("test2 run");
    }
}

参数化测试--注解Parameters\DataProvider

xml文件参数化

使用注解:@Parameters

package com.course.testng.parameter;

import org.testng.annotations.Parameters;
import org.testng.annotations.Test;


public class ParameterTest {
    @Test
    @Parameters({"name","age"})
    public void ParameterTest1(String name,int age){
        System.out.println("name = "+name+",年龄:"+age);
    }
}

xml传参:

<?xml version="1.0" encoding="CESU-8" ?>
<suite name="sd">
    <test name="par">
        <classes>
            <parameter name="name" value="hanzu"/>
            <parameter name="age" value="12"/>
            <class name="com.course.testng.parameter.ParameterTest"/>
        </classes>
    </test>
</suite>

DataProvider参数化

使用注解Test属性:dataProvider进去参数

使用注解DataProvider定义参数

package com.course.testng.parameter;

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

import java.lang.reflect.Method;

public class DataProviderTest {
    //直接传输参数
    @Test(dataProvider = "data")
    public void dataTest(String name,int age){
        System.out.println("name = "+name+",年龄:"+age);
    }

    @DataProvider(name = "data")
    public Object [] [] providerData(){
        Object [] [] o = new Object[][]{
                {"hanzhenyu",10},{"wangxue",11}
        };

        return o;
    }
    //通过接口传输参数
    @Test(dataProvider = "methodData")
    public void test1(String name,int age){
        System.out.println("test1方法:name = "+name+",年龄:"+age);
    }
    @Test(dataProvider = "methodData")
    public void test2(String name,int age){
        System.out.println("test2方法:name = "+name+",年龄:"+age);
    }
    @DataProvider(name = "methodData")
    public Object[][] methodDataTest(Method method){
        Object[][] result = null;
        if(method.getName().equals("test1")){
            result = new Object[][]{
                    {"test1-zhang",10},{"test1-li",19}
            };
        }else if(method.getName().equals("test2")){
            result = new Object[][]{
                    {"test2-hu",20},{"test2-cai",29}
            };
        }
        return result;
    }
}

posted @ 2022-03-03 17:45  77的小白  阅读(77)  评论(0)    收藏  举报