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的组测试和组中组测试
如果我善良,
别认为我软弱。因为我明白,善良是本性,做人不能恶。
时间: 2024-09-21 01:35:39