testng参数化测试

一、什么是参数化测试?

通过XML/@Parameters/@DataProvider将参数传递给@Test方法。
参数化使开发人员可以每次使用不同的值运行测试。将测试数据与测试代码解耦。

二、如何使用?

TestNG可以通过两种不同的方式将参数直接传递给测试方法:

  • 使用testing.xml
  • 使用数据提供者@DataProvider

三、案例

案例1-testng.xml

ParamterTest.java

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

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

Paramter.xml

<?xml version="1.0" encoding="UTF-8" ?>

<suite name="parameter">
    <test name="param">

        <classes>
            <parameter name="name" value="zhangsan"/>
            <parameter name="age" value="10"/>
            <!--加上ParamterTest,就可以使用xml执行ParamterTest类内的测试了-->
            <class name="com.course.testng.paramter.ParamterTest"/>
        </classes>

    </test>

</suite>

执行Paramter.xml,结果如下
在这里插入图片描述

案例2-DataProvider
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;

public class DataProviderTest {
    @Test(dataProvider = "provideInfo")
    public void test(String name, int age) {
        System.out.println(name + ": " + age);
    }

    @DataProvider(name = "provideInfo")
    public Object[][] provideData() {

        return new Object[][] { { "张三", 30 }, { "李四", 40 }, { "王五", 50 } };
    }
}

执行DataProviderTest ,结果如下
在这里插入图片描述

案例3-DataProvider+方法

根据测试方法名称传递不同的参数。

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

import java.lang.reflect.Method;

public class DataProviderTest {
    @Test(dataProvider = "provideInfo")
    public void test1(String name, int age) {
        System.out.println(name + ": " + age);
    }

    @Test(dataProvider = "provideInfo")
    public void test2(int id, int age) {
        System.out.println(id + ": " + age);
    }


    @DataProvider(name = "provideInfo")
    public Object[][] provideData(Method method) {
        if (method.getName().equals("test1")){
            return new Object[][] { { "张三", 30 }, { "李四", 40 }, { "王五", 50 } };
        } else if (method.getName().equals("test2")){
            return new Object[][] { { 1, 30 }, { 2, 40 }, { 3, 50 } };
        }
        return null;
    }
}

执行DataProviderTest,结果如下
在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值