Testng数据驱动之DataProvider的使用方式

DataProvider

@DataProvider 注解帮助我们编写数据驱动的测试用例。@DataProvider 注解使我们能够通过传递不同的数据集多次运行测试方法。

以下是@DataProvider 注解支持的属性列表:

属性描述
name此数据提供者的名称。如果未提供,则此数据提供程序的名称将自动设置为方法的名称。带注解的方法必须返回一个 Object[][],其中每个 Object[] 都可以分配测试方法的参数列表。
parallel如果设置为true,则使用此数据提供程序生成的测试将并行运行。默认值为false

dataProvider作为数据提供者只能返回Object[][]和Iterator<Object[]>类型的数据。

Iterator<Object[]>类型
package com.testng.example.testngdemoone;

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

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;


public class TestngDemoOneApplicationTest {

    @DataProvider(name="dataProvider-testcase")
    public Iterator<Object[]> dataProvider() {
        List<Object> testCasePaths = new ArrayList<Object>();
        testCasePaths.add("test1");
        testCasePaths.add("test2");
        testCasePaths.add("test3");
        testCasePaths.add("test4");
        List<Object[]> path = new ArrayList<>();
        for(Object obj:testCasePaths){
            path.add(new Object[]{obj});
        }
        return path.iterator();
    }

    @Test(dataProvider = "dataProvider-testcase")
    public void testDataProviderIterator(String path) {
        System.out.println(path);
    }
}

测试执行结果

test1
test2
test3
test4

===============================================

Default Suite

Total tests run: 4, Passes: 4, Failures: 0, Skips: 0

===============================================

Object[][]类型
package com.testng.example.testngdemoone;

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

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;


public class TestngDemoOneApplicationTest {
    @Test
    void contextLoads() {
        System.out.println("this is the first surccess test");
    }

    @Test
    void errorTests() {
        System.out.println("this is the first error test");
        assert false;
    }
    @DataProvider(name="dataProvider-testcase")
    public Iterator<Object[]> dataProvider() {
        List<Object> testCasePaths = new ArrayList<Object>();
        testCasePaths.add("test1");
        testCasePaths.add("test2");
        testCasePaths.add("test3");
        testCasePaths.add("test4");
        List<Object[]> path = new ArrayList<>();
        for(Object obj:testCasePaths){
            path.add(new Object[]{obj});
        }
        return path.iterator();
    }

    @Test(dataProvider = "dataProvider-testcase")
    public void testDataProviderIterator(String path) {
        System.out.println(path);
    }

    @Test(dataProvider = "data")
    public void dataProviderTest(String name, int age, String hobby) {
        System.out.println(name + " " + age + " " + hobby);
    }

    @DataProvider(name = "data")
    Object[][] getData(){
        return new Object[][] {
                {"June", 22, "Sing"},
                {"Jack", 22, "Football"},
                {"Duke", 22, "Chess"}
        };
    }
}
package com.testng.example.testngdemoone;

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

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;


public class TestngDemoOneApplicationTest {

    @Test(dataProvider = "data")
    public void dataProviderTest(String name, int age, String hobby) {
        System.out.println(name + " " + age + " " + hobby);
    }

    @DataProvider(name = "data")
    Object[][] getData(){
        return new Object[][] {
                {"June", 22, "Sing"},
                {"Jack", 22, "Football"},
                {"Duke", 22, "Chess"}
        };
    }
}

June 22 Sing
Jack 22 Football
Duke 22 Chess

===============================================
Default Suite

Total tests run: 3, Passes: 3, Failures: 0, Skips: 0

===============================================

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一个双鱼座的测开

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值