1. 程式人生 > >testNG中dataprovider使用的兩種方式。

testNG中dataprovider使用的兩種方式。

testNG的引數化測試有兩種方式:xml和dataprovider.個人更喜歡dataprovider,因為我喜歡把測試資料放在資料庫裡。

一.返回型別是Iterator<Object[]>,不用管有多少組測試資料,可以抽取出來以map的id為引數作為公用的提取資料方法。

@DataProvider(name="loginData")
private Iterator<Object[]> LoginDataProvider() throws IOException {
    List<Object[]> result=new ArrayList<Object[]>();
SqlSession session=DatabaseUtil.getSqlSession(); List<Object> alldata=session.selectList("loginTestAll"); Iterator it=alldata.iterator(); while(it.hasNext()){ result.add(new Object[] { it.next() }); } return result.iterator(); }

二.返回型別是Object[][],明確知道有幾組測試資料

@DataProvider(name="loginData"
) private Object[][] LoginDataProvider() throws IOException { Object[][] result=null; SqlSession session=DatabaseUtil.getSqlSession(); result=new Object[][]{{session.selectOne("loginTest",1)},{session.selectOne("loginTest",2)}}; return result; }

測試呼叫

@Test(groups="login",dataProvider 
= "loginData") public void loginTestCase(LoginTest loginTest) throws IOException { //用測試資料發起請求,獲取響應 String response=getResult(loginTest); //響應斷言 JSONObject rj=new JSONObject(response); String code=rj.getInt("code")+""; Assert.assertEquals(code,loginTest.getExpected()); }