TestNG-参数化

TestNG支持参数化测试,一种是通过xml文件进行参数化,第二种就是DataProvider参数化

1️⃣通过xml文件

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="parmsuitename">
    <test name="parm">
        <!--参数-->
        <parameter name="name" value="Jack"></parameter>
        <parameter name="age" value="25"></parameter>
        <!--指定运行的类-->
        <classes>
            <class name="com.course.testng.parm.ParamterTest"></class>
        </classes>
    </test>
</suite>

类代码:需要两个注解,一个是@Test,标注是个测试类;另一个是@Parameters,写着传入的参数

package com.course.testng.parm;
import org.testng.annotations.Parameters;
import org.testng.annotations.Test;

public class ParamterTest {
    @Test
    @Parameters({"age","name"})
    public void paramTest1(int age, String name) {
        System.out.println(age + name);
    }
}

2️⃣通过DataProvider:Object[][]

一、将值直接传递到方法

package com.course.testng.parm;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;

public class DataProviderTest {
    @Test(dataProvider = "dataDemo")
    public void paramTestByDataProvider(String name, int age) {
        System.out.println("年龄是:" + age + ",姓名是:" + name);
    }

    @DataProvider(name = "dataDemo")
    public Object[][] providerData() {
        Object[][] objects = new Object[][]{
                {"Jack", 25},
                {"Rose", 26}
        };
        return objects;
    }
}

运行结果:

年龄是:25,姓名是:Jack
年龄是:26,姓名是:Rose

===============================================
Default Suite
Total tests run: 2, Failures: 0, Skips: 0
===============================================  

二、通过不同的方法名,传递不同的参数值

    @Test(dataProvider = "methodDemo")
    public void methodTest1(String name, int age) {
        System.out.println("Iterator1的年龄是:" + age + ",姓名是:" + name);
    }

    @Test(dataProvider = "methodDemo")
    public void methodTest2(String name, int age) {
        System.out.println("Iterator222年龄是:" + age + ",姓名是:" + name);
    }

    @DataProvider(name = "methodDemo")
    public Object[][] methodDataTest(Method method) { //方法参数中一定要写(Method method),引入的包是:java.lang.reflect.Method
        Object[][] objects = null;
        if (method.getName().equals("methodTest1")) { //根据不同的方法名,传不同的参数值
            objects = new Object[][]{
                    {"张三呢", 23},
                    {"李四呀", 12}
            };
        } else if (method.getName().equals("methodTest2")) {
            objects = new Object[][]{
                    {"gaga", 36},
                    {"justin", 14}
            };
        }
        return objects;
    }

根据方法名,传不同的参数

 通过DataProvider还有一种返回迭代器的方法,下次再补充

原文地址:https://www.cnblogs.com/starstarstar/p/11317864.html