【java测试-testng4】参数化的两种形式:xml和DataProvider

2021-03-07 14:31

阅读:705

标签:文件   sys   一个   out   ann   rgb   测试数据   apr   ring   

通常情况,测试方法中是不需要传入参数的,但不代表不能。

如果针对一个方法,需要传入多组数据进行测试,或者测试数据不想写在测试方法里,都需要用到参数化。

 

第一种:xml配置文件中存储数据

1.测试方法上加@Parameters({"name","age"})注解及参数

2.xml配置文件中标签中添加标签,其中的name对应变量名,value对应变量的值。

package com.coke.testng.parameter;

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

public class ParameterTest {

    @Test
    @Parameters({"name","age"})
    public void paramTest1(String name,int age){
        System.out.println("name = "+name+", age = "+age);
    }
}
xml version="1.0" encoding="UTF-8" ?>
suite name="parameterTest">
    test name="parameter">
        classes>
            parameter name="name" value="zhangsan"/>
            parameter name="age" value="20"/>
            class name="com.coke.testng.parameter.ParameterTest"/>
        classes>
    test>
suite>

 

第二种:测试类中写DataProvider

1.测试方法上加@Test(dataProvider = "data");

2.返回Object[][]方法上加@DataProvider(name = "data"),与测试方法里的保持一致。

package com.coke.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 testDataProviderTest(String name,int age){
        System.out.println("name="+name+";age="+age);
    }

    @DataProvider(name = "data")
    public Object[][] providerData(){

        Object[][] objects = new Object[][]{
                {"zhangsan",20},
                {"lisi",21},
                {"wangwu",22}
        };

        return objects;
    }

}

 

还有一种不常用的情况,根据不同的方法名,判断传入不同的参数。

区别在于返回Object[][]方法里,加入形参(Method method);

method.getName().equals("test1")  匹配测试方法名,从而传入不同的数据。

package com.coke.testng.parameter;

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

import java.lang.reflect.Method;

public class DataProviderTest {

    @Test(dataProvider = "methodData")
    public void test1(String name,int age){
        System.out.println("test1方法 的 name="+name+";age="+age);
    }

    @Test(dataProvider = "methodData")
    public void test2(String name,int age){
        System.out.println("test2方法 的 name="+name+";age="+age);
    }

    @DataProvider(name = "methodData")
    public Object[][] MethodData(Method method) {
        Object[][] result = null;

        if (method.getName().equals("test1")) {
            result = new Object[][]{
                    {"zhangsan",20},
                    {"lisi",21}
            };
        } else if (method.getName().equals("test2")) {
            result = new Object[][]{
                    {"wangwu",22},
                    {"zhuliu",23}
            };
        }

        return result;
    }

}

 

【java测试-testng4】参数化的两种形式:xml和DataProvider

标签:文件   sys   一个   out   ann   rgb   测试数据   apr   ring   

原文地址:https://www.cnblogs.com/yunren/p/14260882.html


评论


亲,登录后才可以留言!