TestNG @DataProvider 之 测试参数示例

TestNG提供的一项重要功能是testng DataProvider功能。它可以帮助您编写数据驱动的测试,这实际上意味着同一测试方法可以使用不同的数据集多次运行。

请注意,@DataProvider是将参数传递到测试方法的第二种方法,除了从testng.xml传递参数之外。它有助于为测试方法提供复杂的参数,因为不可能从XML做到这一点。

要在测试中使用DataProvider功能,您必须声明一个由注解的方法@DataProvider,然后在测试方法中使用注解中的’ dataProvider ‘属性使用所述方法@Test

1。 TestNG @DataProvider和@Test在同一类中

下面的测试类包含一个测试方法,该方法采用一个参数作为输入,并在执行时将其打印到控制台。通过使用@DataProviderTestNG 的注解,DataProvider方法在同一类中也可用。

使用注解的name属性来提及所述DataProvider方法的名称@DataProvider。DataProvider返回一个具有两个数据集的双Object类数组,即“数据一”和“数据二”。

package com.how2codex.test;

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

public class SameClassDataProvider 
{
	@DataProvider(name = "data-provider")
	public Object[][] dataProviderMethod() {
		return new Object[][] { { "data one" }, { "data two" } };
	}

	@Test(dataProvider = "data-provider")
	public void testMethod(String data) {
		System.out.println("Data is: " + data);
	}
}

现在运行以上测试。以上测试运行的输出如下:

Data is: data one
Data is: data two

PASSED: testMethod("data one")
PASSED: testMethod("data two")

从上面的测试结果可以看出,该类中的相应测试方法已执行了两次。测试方法的执行取决于DataProvider方法传递的数据集的数量,在这种情况下,由于DataProvider返回了两组不同的数据,因此测试方法执行了两次。

@DataProvider方法必须以Object类的双精度数组(Object [] [])的形式返回数据。第一个数组代表一个数据集,其中第二个数组包含参数值。

2。 TestNG @DataProvider和@Test在不同的类中

要了解这一点,请添加两个名称DataProviderClassTestClass如下的类。

2.1。DataProvider.java

import org.testng.annotations.DataProvider;

public class DataProviderClass 
{
	@DataProvider(name = "data-provider")
	public static Object[][] dataProviderMethod() 
	{
		return new Object[][] { { "data one" }, { "data two" } };
	}
}

2.2。TestClass.java

import org.testng.annotations.Test;

public class TestClass 
{
	@Test(dataProvider = "data-provider", dataProviderClass = DataProviderClass.class)
	public void testMethod(String data) 
	{
		System.out.println("Data is: " + data);
	}
}

2.3。Demo

现在运行以上测试。以上测试运行的输出如下:

Data is: data one
Data is: data two

PASSED: testMethod("data one")
PASSED: testMethod("data two")

从上面的测试结果中可以看到,根据DataProvider方法传递给它的数据,该测试方法已执行两次。在这种情况下,DataProvider方法位于另一个类中。在这种情况下dataProviderMethod(),必须声明静态的 以便其他类别中的测试方法可以使用它来提供数据。

saigon has written 1445 articles

Leave a Reply