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());

}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章