JUnit中有讲述使用注解的方式进行数据源读取进行自己主动循环測试的方法,在TestNG中也提供了对应的方法

public class TestngDataProvider {
	/**
	 * 数组内的每一个元素都会作为一个用例数据被运行 On execution testEmployeeData() will be executed 4
	 * times,
	 * 
	 * 数据源能够是Java对象、配置文件、数据库
	 * 
	 * @return
	 */
	@DataProvider(name = "DP1")
	public Object[][] createData() {
		Object[][] retObjArr = { { "001", "Jack", "London" },
				{ "002", "John", "New York" }, { "003", "Mary", "Miami" },
				{ "004", "George", "california" } };
		return (retObjArr);
	}

	@Test(dataProvider = "DP1")
	public void testEmployeeData(String empid, String empName, String city) {
		System.err.println(empid);
		System.err.println(empName);
		System.err.println(city);

	}

	@DataProvider(name = "iterator")
	public Iterator<Object[]> getData() {
		Set<Object[]> set = new HashSet<Object[]>();
		set.add(new String[] { "hello" });
		Iterator<Object[]> iterator = set.iterator();
		return iterator;
	}

	@Test(dataProvider = "iterator")
	public void testIteraorData(String iterator) {
		System.err.println("iterator  .. " + iterator);

	}
}


測试结果:

001
Jack
London
002
John
New York
003
Mary
Miami
004
George
california
iterator  .. hello
PASSED: testEmployeeData("001", "Jack", "London")
PASSED: testEmployeeData("002", "John", "New York")
PASSED: testEmployeeData("003", "Mary", "Miami")
PASSED: testEmployeeData("004", "George", "california")
PASSED: testIteraorData("hello")

===============================================
    Default test
    Tests run: 5, Failures: 0, Skips: 0
===============================================


注意要点:

1.我们的@DataProvider方法能够通过读取Excel、数据库、properties文件等方式进行获取。这个取决于实际測试用例的设计和项目的须要。

2.其返回值是返回一个二维数组。数组内的二维元素个数必须和调用方法的參数一致。

3.这个一致包含了个数和顺序以及类型,否则假设类型不匹配或无法自己主动转换时就会抛出类型转换异常,而參数个数不匹配也会抛出參数缺失异常。


TestNG的组測试和组中组測试



假设我善良。
别觉得我软弱。由于我明确,善良是本性,做人不能恶。