2016-08-03 140 views
2

我目前用TestNG +硒自動化我的考驗,我有以下情形:運行與硒的DataProvider多個測試

我需要從一個excel文件中讀取,在對象變換每行和每運行1測試他們每個人。我試圖使用註解@DataProvider來返回一個對象數組,但它只能夠返回迭代器和對象[] []。有沒有什麼解決方法可以用來從DataProvider返回一個Cliente對象數組?我曾嘗試下面的代碼,但它僅打印來自客戶機2的數據:

public class TestDataProvider 
{ 
    Cliente cliente; 

    @DataProvider(name = "test1") 
    public static Object[][] dataMethod() {  
     return new Object[][] { { new Cliente("Client1", "1111111111") }, 
           { new Cliente("Client2", "2222222222") }}; 
    } 

    @Test(dataProvider = "test1") 
    public void testMethod(Cliente cliente) { 
     System.out.println(cliente.getNome() + " " + cliente.getCartao()); 
    } 
} 

EDIT1:Cliente類:被印刷在控制檯

public class Cliente { 
    private static String name; 
    private static String card; 

    //Construtor method 
    public Cliente(String name, String card){ 
     setname(name); 
     setCartao(card); 
    } 

    public String getName() { 
     return name; 
    } 

    public void setName(String name) { 
     Cliente.name = name; 
    } 

    public String getCard() { 
     return card; 
    } 

    public void setCard(String card) { 
     Cliente.card = card; 
    } 
} 

值:

Client2 2222222222 
Client2 2222222222 
+0

能否請您分享Cliente類的代碼段,這樣,這將是任何人誰提供的答案更容易。 – Harish

+0

爲什麼你想要一系列Cliente對象? TestNG迭代Cliente對象數組,併爲每個Cliente對象調用Test方法。你爲什麼要重複自己? – CARE

+0

謝謝各位回覆,我已經添加了Cliente Class的代碼。 CARE,我想返回一個Cliente對象的數組,因爲我會讀取每個對象併爲它們中的每一個運行測試。你的意思是說這不是必要的嗎?如果是這樣,你會有一個如何去做的例子嗎?提前致謝。 – Felipe

回答

2

所以...

您的先決條件:

  • excel文件,每一行 - 一個數據集
  • 每個數據集
  • 運行測試

你能做些什麼:

  1. 創建@DataProvider其返回Iterator<Object[]>與您的數據集,每個對象[]是來自excel的排名。 (最簡單的一個)
  2. 使用@Factory手動迭代您的數據集並調用測試方法。
  3. 使用@DataProvider@Factory提供數據,並按照上述方式進行。 第二個和第三個選項很複雜,但如果您有其他參數(數據集除外)來運行測試,則會有一些好處。
0

感謝您的幫助。隨着RocketRacoon的第三個建議,我設法解決了我的問題。下面是一個簡單的例子:

public class ProvidedTest 
{ 
    private static nome; 
    private static cpf; 
    private static cartao; 

    @DataProvider 
    public static Object[][] dataProviderMethod() {  
     return new Object[][] { {"Client1", "111111111", "444444444"}, 
           {"Client2", "222222222", "555555555"}, 
           {"Client3", "333333333", "666666666"}}; 

    } 

    @Factory (dataProvider="dataProviderMethod") 
    public ProvidedTest(String nome, String cpf, String cartao){   
     this.nome = nome; 
     this.cpf = cpf; 
     this.cartao = cartao; 

    } 

    @Test 
    public void testCase(){ 
     System.out.println(cliente.getNome()); 
     System.out.println(cliente.getCpf()); 
     System.out.println(cliente.getCartao()); 
    } 
}