2016-05-25 3 views
0

Hier ist mein Code, ich möchte erste Satzdaten übergeben {"shankar", "admin123"} nur test1() und zweiten Satz Daten {"Siva", "admin @ 123"} zu test2(), bitte helfen Sie mir auf, dass ich @ factory auch versucht habe ... bitte helfen Sie mir Jungs.Wie man Testparametrierer zuerst Parameter zum ersten Test und zweiten Satz Paramater zum zweiten Test übergibt usw.

package com.vmetry.dataprovider; 
import org.testng.annotations.DataProvider; 
import org.testng.annotations.Test; 

public class DataProviderTest { 


    @Test(dataProvider="dp") 
    public void test1(String uname, String pass){ 
     System.out.println("the test1 param are: "+uname+"-"+pass); 
    } 

    @Test(dataProvider="dp") 
    public void test2(String uname, String pass){ 
     System.out.println("the test1 param are: "+uname+"-"+pass); 
    } 

    //passing data provider data 
    @DataProvider(name="dp") 
    public Object[][] data(){ 
     Object[][] obj={{"Vasanth","admin123"},{"Shanmugam","[email protected]"}}; 
     return obj; 

    } 
} 

**************************** EIGENTLICH DAS IST MEIN FALL ********** ************** Please CLICK THE IMAGE TO KNOW MY SCENARIO REQUIREMENT

Antwort

0

In Ihrem Beispiel brauchen Sie nicht DataProvider überhaupt zu benutzen:

public class DataProviderTest { 
    @Test 
    public void test1(){ 
     String uname="Shanmugam"; 
     String pass="admin123"; 
     System.out.println("the test1 param are: "+uname+"-"+pass); 
    } 

    @Test 
    public void test2(){ 
     String uname="Shanmugam"; 
     String pass="[email protected]"; 
     System.out.println("the test1 param are: "+uname+"-"+pass); 
    } 
} 

Wenn aus irgendeinem Grund Sie Muss Verwenden Sie eine DataProvider dann können Sie zusätzliche, dass erstellen filtern Sie Ihr Original:

public class DataProviderTest { 
    @Test(dataProvider="dp1") 
    public void test1(String uname, String pass){ 
     System.out.println("the test1 param are: "+uname+"-"+pass); 
    } 

    @Test(dataProvider="dp2") 
    public void test2(String uname, String pass){ 
     System.out.println("the test1 param are: "+uname+"-"+pass); 
    } 

    @DataProvider(name="dp1", indices={0}) 
    public Object[][] data(){ 
     return data() 
    } 

    @DataProvider(name="dp2", indices={1}) 
    public Object[][] data(){ 
     return data() 
    } 

    @DataProvider(name="dp") 
    public Object[][] data(){ 
     return new Object[][]{{"Vasanth","admin123"},{"Shanmugam","[email protected]"}}; 
    } 
} 

Oder wenn Sie eine Testklasse pro Daten-Provider-Datensatz bei Ihrem Test (e):

public class DataProviderTest { 
    private final String uname; 
    private final String pass; 

    @Factory(dataProvider="dp") 
    public DataProviderTest(String uname, String pass) { 
     this.uname=uname; 
     this.pass=pass; 
    } 

    @DataProvider(name="dp") 
    public static Object[][] data() { 
     return new Object[][]{{"Vasanth","admin123"},{"Shanmugam","[email protected]"}}; 
    } 

    @Test 
    public void test() { 
     System.out.println("the test1 param are: "+uname+"-"+pass); 
    } 
} 
+0

Dank mfulton26, eigentlich ur Antwort ist hilfreich, aber mein Szenario ist am Lesen von Datenzeilen von dynamic excel über object [] [] und Bereitstellen über dataprovider, also kann ich Daten als ein Dataset an den ersten Test übergeben und zweiten Datensatz an den zweiten Test mit Constructor & @ Factory oder irgendetwas, weil ich nicht will Erwähnen Sie den Datenanbieter für jeden Test. Kannst du mir bitte weiterhelfen? –

+0

@vasanths Ich bin mir nicht sicher, ob ich das richtig verstanden habe oder nicht: Wollen Sie sagen, dass Sie eine Testklasse pro Datensatz in Ihrem Datenanbieter haben wollen? – mfulton26

+0

nicht so, wie du die Antwort gegeben hast, ist in Ordnung für mich, aber nur etwas, das ich nicht für jeden Test Datenprovider erwähnen möchte, ist es möglich, von zentralen Datenprovider übergeben (dh meine Anforderung ist, dass ich nur einen Datenprovider allein verwenden möchte) , danke im Voraus –

Verwandte Themen