TestNG中使用DataProvider有個好處,就是:java
1. 在執行用例的時候dataProvider迭代中的每組數據都是做爲一個用例執行dom
2. 在測試數據有規律的狀況下,免去了添加testXML測試數據的煩惱,直接將測試數據,按個或者組,放到dataProvider中便可ide
注意:可是dataProvider做爲數據提供者只能返回Object[][]和Iterator<Object[]>類型的數據測試
那咱們的數據是按照對象存儲的該怎麼寫入和輸出呢,我這裏提供一個簡單的樣例:this
// 返回Iterator<Object[]> @DataProvider(name = "iterator") public Iterator<Object[]> dp1() { List<Object> item = new ArrayList<Object>(); // 添加第一個用戶 UserInfo user1 = new UserInfo(); user1.setUserName("User1"); user1.setPassword("Password1"); item.add(user1); // 添加第二個用戶 UserInfo user2 = new UserInfo(); user2.setUserName("User2"); user2.setPassword("Password2"); item.add(user2); List<Object[]> users = new ArrayList<Object[]>(); for (Object u : item) { //作一個形式轉換 users.add(new Object[] { u }); } return users.iterator(); }
咱們將上述的UserInfo的數據組放入到了iterator中,怎麼調用呢?spa
@Test(dataProvider = "iterator") public void testProvider(UserInfo user) { System.out.println("User Name is: "+ user.getUserName() +"\n"+"User password is" + user.getPassword()); }
這裏給出一個UserInfo的對象code
/** * @Title: UserInfo.java * @Package com.dataProvider.domain * @Description: TODO(用一句話描述該文件作什麼) * @author pc * @date 2017年1月16日 * @version V1.0 */ package com.dataProvider.domain; /** * @ClassName: UserInfo * @Description: TODO(這裏用一句話描述這個類的做用) * @author pc * @date 2017年1月16日 * */ public class UserInfo { private String userName; private String password; public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } }