`
清春不二
  • 浏览: 16461 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

TestNG参数化测试之使用DataProvider

阅读更多
使用DataProvider提供数据有两种形式:
第一种:一种是在把数据提供的代码和测试方法放在同一个类中;
第二种:把所有的数据提供都单独写在一个类里面,当测试数据比较多时,这种方法利于维护。

DataProvider定义了属性name时,提取数据时可以使用name,没有定义name时,提取数据时直接使用方法名称。

第一种示例:
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 ,"hi"}, { 6, false ,"test"}, { 19, true ,"good"},
        	{ 22, false ,"aha"}, { 23, true ,"loo"} };
    }

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


第二种示例,把数据单独放在一个类里面,操作和测试数据部在不同一个java类中,Test必须指定测试数据Java类,如 @Test(dataProvider="dataprovider2",dataProviderClass=DataProviderMethod.class),否则执行的时候会Skip该方法,有报错提示“......requires a @DataProvider named : dataprovider2”,并且数据类里的方法必须声明为static,不然也提取不了数据:

提供数据的类:
package TestngTest;

import org.testng.annotations.DataProvider;


public class DataProviderMethod {
  //无指定数据名称,默认使用方法名
    @DataProvider
    public static Object[][] NoNameMethod(){
        return new Object[][]{
                {"DataWithNoName1"},
                {"DataWithNoName2"},
                {"DataWithNoName3"}
        };
    }
    //指定名称1
    @DataProvider(name="dataprovider1")
    public static Object[][] dataProvider1(){
        return new Object[][]{
                {"dataprovider1-1"},
                {"dataprovider1-2"}
        };
    }
    //指定名称2
    @DataProvider(name="dataprovider2")
    public static Object[][] dataProvider2(){
        return new Object[][]{
                {"dataprovider2-1"},
                {"dataprovider2-2"}
        };
    }
}

测试类:
package TestngTest;

import org.testng.annotations.Test;


public class DdataProviderTest {
    @Test(dataProvider="NoNameMethod",dataProviderClass=DataProviderMethod.class)
    public void doTestNG(String testdatas) {
        System.out.println("未指定名称,数据源名为方法名NoNameMethod:"+testdatas);
    }
    
    @Test(dataProvider="dataprovider1",dataProviderClass=DataProviderMethod.class)
    public void doTestNG1(String testdatas){
        System.out.println("指定名称,数据源名称选择了dataprovider1:"+testdatas);
    }
    
    @Test(dataProvider="dataprovider2",dataProviderClass=DataProviderMethod.class)
    public void doTestNG2(String testdatas){
        System.out.println("指定名称,数据源名称选择了dataprovider2:"+testdatas);
    }
}

分享到:
评论

相关推荐

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

    "junit-dataprovider"是一个JUnit扩展,它允许开发者像TestNG一样,通过数据提供者来运行参数化的测试用例。这样,我们可以为同一测试方法提供多种输入数据,以验证不同情况下的代码行为。这在处理复杂逻辑或需要...

    TestNG-6.3 测试框架

    另一个值得一提的是,TestNG支持参数化测试,可以通过数据提供者(@DataProvider)来为测试方法提供不同输入数据,从而实现对同一测试逻辑的多种情况验证。这提高了测试覆盖率,确保了代码在不同条件下的稳定性。 在...

    java测试新技术-TestNG和高级概念

    7. 数据提供者(Data Providers):TestNG提供了一个叫做@DataProvider的特殊注解,它可以与参数化测试结合使用,用来向测试方法提供数据。数据提供者可以是方法或者类,并且可以返回任意类型的数据集合。 8. 测试...

    Java测试新技术-TestNG

    4. 参数化测试:TestNG支持使用DataProvider注解,这使得测试方法可以接受不同参数组合,从而实现参数化测试。 5. 分组测试:通过注解@Groups可以将测试方法分组,在执行时可以选择运行特定组的测试。 6. 并行测试...

    testNG单元测试Demo

    10. **测试参数化**:使用`@Parameters`和`@DataProvider`进行参数化测试的实践和好处。 通过深入学习和实践这个“testNG单元测试Demo”,你可以全面了解TestNG的功能,并将其应用到自己的项目中,提高测试的质量和...

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

    7. **数据驱动测试**:通过@DataProvider,TestNG可以为测试方法提供多组输入数据,实现数据驱动的测试,方便进行参数化测试。 8. **配置方法**:@Before/After系列注解允许定义在测试执行前后的配置方法,如初始化...

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

    2. **数据驱动测试**:通过参数化功能,可以很容易地实现数据驱动的测试案例,而无需重复代码。 3. **并行执行**:支持并行执行测试用例,提高测试效率。 4. **失败重试**:对于失败的测试用例,可以配置重试机制,...

    TestNG在eclipse中的使用

    4. **参数化测试**:TestNG允许使用参数化测试,即可以通过设置文件或@DataProvider来传递参数给测试方法,提高了测试的可复用性和灵活性。 5. **分布式测试**:TestNG支持在多个节点上并行运行测试,通过配置可以...

    Learn_TestNG_basicsToAdvanced_RS:测试框架-如何使用TestNG批注和其他属性来控制代码执行流程

    Learn_TestNG_basicsToAdvanced_RS 测试框架-如何使用TestNG批注和其他属性来控制代码执行...DataProvider批注-参数化测试用例-1 数据提供者注释-参数化测试用例2 TestNG框架中的侦听器接口 并行运行测试并生成报告

    TestNG.rar

    6. **参数化测试**:TestNG支持参数化测试,可以通过数据提供者(`@DataProvider`)来为测试方法提供多种输入值,从而实现对同一方法的不同情况的测试。 7. **依赖注入**:TestNG支持依赖注入,可以将对象实例化和...

    testng离线安装包-可用

    - 参数化测试:通过@DataProvider提供测试数据,结合@Test进行多组数据的测试。 - 编写测试套件:使用@TestSuite将多个测试类或测试方法组合为一个测试套件。 - 运行和分析测试:在Eclipse中,你可以选择单个测试...

    TestNg测试ppt

    - **参数化测试**:支持将不同的输入数据传入同一个测试方法,从而避免了为每种情况编写单独的测试方法。 - **测试分组**:允许将测试方法分组,便于管理和运行特定的一组测试。 - **安全的多线程测试**:支持并行...

    testng架包下载

    3. **参数化测试**:TestNG支持参数化测试,可以为测试方法提供不同的输入参数,这在单元测试中非常有用。使用`@Parameters`和`@DataProvider`注解实现。 4. **依赖管理**:通过`@dependsOnMethods`注解,你可以...

    testng注解方法执行顺序

    4. **DataProvider**:DataProvider注解用于提供测试数据,可以看作是参数化测试的一种实现方式。它可以和@Test注解结合使用,为不同的测试数据提供参数。DataProvider会在对应的@Test方法执行前,为每一个数据组...

    testng-6.10.jar

    4. **数据驱动测试**:通过@DataProvider方法,TestNG可以为测试方法提供多组输入数据,实现数据驱动测试,简化了参数化测试的编写。 5. **依赖注入**:TestNG支持依赖注入,可以通过@注入注解将对象实例化并注入到...

    TESTNG.ppt

    10. 参数化测试:使用@DataProvider注解的方法或者在eclipse-testng.xml中指定参数值。 11. 动态测试创建:通过Factories可以动态创建测试实例。 12. 并行测试执行:可以指定测试在多个线程中并行运行,同时支持在...

    eclipse-testng离线包

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

    Practical Unit Testing with TestNG and Mockito

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

    Selenium+TestNG 框架的WEB自动化源码

    TestNG还支持数据驱动测试,可以使用`@DataProvider`注解将数据作为参数传递给测试方法。此外,`@BeforeMethod`和`@AfterMethod`等注解可以用于定义在每个测试方法执行前后的准备工作和清理工作。 在`GreenbackWeb`...

Global site tag (gtag.js) - Google Analytics