`

TestNG – Parameter with @DataProvider

 
阅读更多
@DataProvider 这个注解只有一个字符串属性:它的名字。
如果不提供名称,将会自动默认使用方法的名称。该方法返回一个对象数组。

1. 使用@DataProvider的简单例子:
public class TestParameterDataProvider {
 
	@Test(dataProvider = "provideNumbers")
	public void test(int number, int expected) {
		Assert.assertEquals(number + 10, expected);
	}
 
	@DataProvider(name = "provideNumbers")
	public Object[][] provideData() {
 
		return new Object[][] { 
			{ 10, 20 }, 
			{ 100, 110 }, 
			{ 200, 210 } 
		};
	}
 
}



PASSED: test(10, 20)
PASSED: test(100, 110)
PASSED: test(200, 210)



2. @DataProvider 使用整数和布尔参数。

创建一个java类。检查是否为素数
public class PrimeNumberChecker {
    public Boolean validate(final Integer primeNumber) {
        for (int i = 2; i < (primeNumber / 2); i++) {
            if (primeNumber % i == 0) {
                return false;
             }
        }
        return true;
    }
}

创建测试案例类
  • 创建一个Java测试类 ParamTestWithDataProvider1.java.
  • 定义方法primeNumbers(),其定义为DataProvider 使用注释。此方法返回的对象数组的数组。
  • 测试方法testPrimeNumberChecker()添加到测试类中。此方法需要一个整数和布尔值作为输入参数。这个方法验证,如果传递的参数是一个素数。
  • 添加注释 @Test(dataProvider = "test1") 到此方法。dataProvider的属性被映射到"test1".


public class ParamTestWithDataProvider1 {
    private PrimeNumberChecker primeNumberChecker;

    @BeforeMethod
    public void initialize() {
        primeNumberChecker = new PrimeNumberChecker();
    }

    @DataProvider(name = "test1")
    public static Object[][] primeNumbers() {
        return new Object[][] { { 2, true }, { 6, false }, { 19, true },
        	{ 22, false }, { 23, true } };
    }

    // This test will run 4 times since we have 5 parameters defined
    @Test(dataProvider = "test1")
    public void testPrimeNumberChecker(Integer inputNumber,
        Boolean expectedResult) {
	System.out.println(inputNumber + " " + expectedResult);
	Assert.assertEquals(expectedResult,
        	primeNumberChecker.validate(inputNumber));
    }
}


创建 TESTNG.XML
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="Suite1">
    <test name="test1">
	<classes>
	    <class name="ParamTestWithDataProvider1" />
	    </classes>
    </test>
</suite>


验证输出
引用
2 true
6 false
19 true
22 false
23 true

===============================================
Suite1
Total tests run: 5, Failures: 0, Skips: 0
===============================================


3. @DataProvider 传递对象作为参数。

创建一个Java类 Bean.java, 对象带有 get/set 方法
public class Bean {
    private String val;
    private int i;
    public Bean(String val, int i){
        this.val=val;
        this.i=i;
    }
    public String getVal() {
	return val;
    }
    public void setVal(String val) {
	this.val = val;
    }
    public int getI() {
	return i;
    }
    public void setI(int i) {
	this.i = i;
    }
}


创建测试案例类
  • 创建一个Java测试类 ParamTestWithDataProvider2.java.
  • 定义方法primeNumbers(),其定义为DataProvider使用注释。此方法返回的对象数组的数组。
  • 添加测试类中测试方法TestMethod()。此方法需要对象的bean作为参数。
  • 添加注释 @Test(dataProvider = "test1") 到此方法.  dataProvider 属性被映射到 "test1".

public class ParamTestWithDataProvider2 {
    @DataProvider(name = "test1")
    public static Object[][] primeNumbers() {
        return new Object[][] { { new Bean("hi I am the bean", 111) } };
    }

    @Test(dataProvider = "test1")
    public void testMethod(Bean myBean) {
        System.out.println(myBean.getVal() + " " + myBean.getI());
    }

}
创建 TESTNG.XML
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="Suite1">
    <test name="test1">
	<classes>
	    <class name="ParamTestWithDataProvider2" />
	    </classes>
    </test>
</suite>


验证输出
引用
hi I am the bean 111

===============================================
Suite1
Total tests run: 1, Failures: 0, Skips: 0
===============================================
分享到:
评论

相关推荐

    junit-dataprovider为JUnit提供一个类似于TestNG的dataproviderrunner

    `@DataProvider`注解用于定义数据提供者方法,该方法返回二维数组或`Map, Object[]&gt;`,每行数据对应一次测试执行。例如,可以创建一个数据提供者,为测试方法提供多种输入值: ```java @DataProvider(name = ...

    quickcheckng:用于QuickCheck生成器的简单TestNG @DataProvider批注处理器

    QuickCheckNG是Java注释处理器,用于为一组QuickCheck生成器生成TestNG @DataProvider方法。 建造 mvn clean install 用法 在您的项目中包含一个名为*Generators.java的类,该类具有一组返回Generator实例的public ...

    junit-dataprovider-1.11.0.zip

    Junit Dataprovider是一个开源项目,它扩展了Junit的功能,引入了一个类似TestNG的`@DataProvider`注解。这个注解允许我们将测试用例与数据集关联起来,从而实现数据驱动测试。这意味着测试方法可以接收多组输入数据...

    junit-dataprovider:JUnit的类似于TestNG的dataprovider运行程序,具有许多其他功能

    `junit-dataprovider` 是一个扩展JUnit测试框架的库,它引入了类似于TestNG的`@DataProvider`注解,使JUnit用户能够更方便地进行数据驱动测试。这个库不仅提供了数据提供者功能,还增加了许多其他增强测试的特性,...

    TestNG整理1

    TestNG提供了两种参数传递方式:通过testng.xml设置参数和使用@DataProvider。在XML文件中定义参数时,TestNG会首先在包含当前类的test标签中查找,如果没有找到,则会向上搜索suite标签。非基本类型的数据可以通过@...

    Practical Unit Testing with TestNG and Mockito

    通过使用TestNG的`@DataProvider`和`@Test(dataProvider = "dataProviderName")`注解,可以轻松实现参数化测试,这对于测试多种输入情况非常有用。 ##### 第五步:检查预期异常 有时,需要验证在特定条件下是否会...

    testNG单元测试Demo

    5. **数据驱动测试**:TestNG支持使用`@DataProvider`注解实现数据驱动测试,可以从外部资源(如CSV文件或数据库)提供输入数据。 6. **报告生成**:TestNG会自动生成详细的测试报告,包括成功的测试、失败的测试、...

    Java测试新技术TestNG和高级概念.pdf

    @DataProvider(name = "dataProvider") public Object[][] createData() { return new Object[][]{ {1, 2}, {3, 4} }; } @Test(dataProvider = "dataProvider") public void testDataDriven(int x, int y)...

    testng离线安装包-可用

    - **数据驱动测试**:通过@DataProvider可以实现基于数据集的测试,提高测试的复用性和覆盖率。 - **并行测试**:支持并发执行测试方法,提升测试效率。 - **测试报告**:TestNG自动生成详细的测试报告,包括测试...

    testng注解方法执行顺序

    只有指定了@DataProvider的@Test方法才会触发DataProvider的执行。 - 测试方法的执行顺序会根据测试方法名称进行字典序排列,数字优先于字母。这个规则允许测试人员通过命名来控制测试执行的顺序。 - 在testng.xml...

    testng 6.8.8

    6. **数据驱动测试**:TestNG 的`@DataProvider` 注解允许你从各种数据源(如文件、数据库或自定义实现)提供测试数据,提高了测试的灵活性和覆盖率。 7. **XML配置**:通过XML配置文件,你可以更精细地控制测试...

    JAVA测试新技术-TESTNG

    6. **数据驱动测试**:使用“@DataProvider”注解,TestNG支持数据驱动测试,可以为同一测试方法提供多组输入数据,提高测试覆盖率。 7. **XML配置**:TestNG支持使用XML配置文件来定义测试结构,这种方式在大型...

    testng注解介绍例子

    8. **@Test Annotation with Parameters**:在某些情况下,如`testngTestOtherParam.java`,我们可以看到测试方法接收参数,这通常与@DataProvider结合使用,为测试用例提供不同的输入值。 9. **@QueueGroup**:这...

    eclipse-testng离线包

    5. **数据驱动测试**:TestNG的@DataProvider可以将数据作为参数传递给测试方法,实现数据驱动测试,适用于多组输入数据的测试场景。 6. **测试套件(Test Suite)**:testng.xml文件用于定义测试套件,它可以包含...

    testng-ext

    6. **数据驱动测试**:通过 `@DataProvider`,我们可以为测试方法提供多种输入数据,实现数据驱动的测试。 7. **报告**:TestNG 自动生成详细的测试报告,包括测试结果、失败信息等,这对于调试和分析测试结果非常...

    testng-6.9.7 源码

    7. **数据驱动测试**:TestNG通过`@DataProvider`注解实现了数据驱动测试,可以在多个数据集上运行相同的测试逻辑,提高了代码复用性。 8. **注解驱动**:TestNG的核心设计之一就是注解驱动,通过注解我们可以轻松...

    testng-6.8.8文件

    - **数据驱动测试**:通过@DataProvider方法,可以为测试方法提供多组输入数据,实现数据驱动的测试。 - **报告生成**:TestNG自动生成详细的测试报告,包括成功的、失败的和跳过的测试信息。 3. **压缩包中的...

    testng-parameter-error:演示显示 testng 中的错误

    用法: git clone https://github.com/chillinPanda/testng-parameter-error.gitcd testng-parameter-errormvn test问题: 我在testng项目中针对这个问题开了一个新问题: : 输出: ParameterErrorDemoWiki.test:12 ...

    最后还是选择了TestNG

    4. **数据驱动测试**:使用@DataProvider,可以从外部数据源(如文件、数据库)获取测试数据,实现对一个测试方法的多次执行,每次用不同的数据。 5. **异常处理**:TestNG允许在测试方法中使用@ExpectedExceptions...

Global site tag (gtag.js) - Google Analytics