TestNG中的DataProvider序列

时间:2016-09-17 16:05:34

标签: selenium automation testng

在使用dataObject

时,我们是否需要在数组对象中遵循相同的序列

例如:代码

 @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));
     }

使用DataProvider IntegerBooleantestPrimeNumberChecker使用相同的序列。如果需要,我是否可以在任何功能中仅使用Boolean记录。

1 个答案:

答案 0 :(得分:1)

@Test方法的输入参数的类型,数字顺序/序列必须与@DataProvider方法传递的相同。

  

使用 dataObject

时,我们是否需要在数组对象中遵循相同的顺序

这里我假设使用你的意思是在@Test方法中传递参数。 答案是 - 我们需要在使用dataObject时遵循数组对象中的相同序列。

示例

@Test(dataProvider = "test1")
     public void testPrimeNumberChecker(Boolean expectedResult, Integer inputNumber) {
// your test method stuff
}

如果你不这样做,你将得到以下异常:

java.lang.IllegalArgumentException: argument type mismatch
  

如果需要,我可以在任何函数中仅使用布尔记录。

这里我也假设通过使用来表示在@Test方法中传递参数。答案是 - ,参数数量很重要。

示例

@Test(dataProvider = "test1")
     public void testPrimeNumberChecker(Boolean expectedResult) {
// your test method stuff
}

因此,如果您的@Test方法输入参数的数量越来越少,那么@DataProvider方法会通过,您将获得以下异常:

org.testng.TestNGException: 
The data provider is trying to pass 2 parameters but the method yourpackage.YourTestClass#testPrimeNumberChecker takes 1