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

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

DataProvider

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

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

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

Iterator类型

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 dataProvider() {

List testCasePaths = new ArrayList();

testCasePaths.add("test1");

testCasePaths.add("test2");

testCasePaths.add("test3");

testCasePaths.add("test4");

List 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 dataProvider() {

List testCasePaths = new ArrayList();

testCasePaths.add("test1");

testCasePaths.add("test2");

testCasePaths.add("test3");

testCasePaths.add("test4");

List 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

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

相关手记

beat365英超欧冠比分 java中的23种设计模式哪些是必须要掌握的
365彩票最新版app下载 中国铁路12306

中国铁路12306

08-25 👁️ 7581
beat365英超欧冠比分 中国电信股份有限公司苏州分公司2025年绿色节能挂测设备采购项目--询比公告
365彩票最新版app下载 现在哪些平台可以薅羊毛?十大薅羊毛攻略方法你知道几个?
beat365英超欧冠比分 Olive: Olive 是跨平台的开源非线性视频剪辑工具,支持 Windows、macOS 和 Linux,目标是提供高端专业视频编辑软件的免费替代方案
365bet取款要多久 湿地知识小百科之(一)湿地中的水藏在哪里?|洣水科普大讲堂第五十二期