2016-05-25 4 views
0

これは私のコードです。最初の設定データ{"shankar"、 "admin123"}をtest1() と2番目の設定データ{"Siva"、 "admin @ 123"}をtest2()、 私は@ factoryも試してみました...testngを渡す方法Dataproviderの最初のパラメータを最初のテストと2番目のパラメータに設定します。

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; 

    } 
} 

****************************実はこれは私のケースです********** **************あなたがすべてでDataProviderを使用する必要はありません、あなたの例では Please CLICK THE IMAGE TO KNOW MY SCENARIO REQUIREMENT

答えて

0

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

場合なければならないいくつかの奇妙な理由のためにを使用してDataProviderを追加すると、フィルタリング元1:

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]"}}; 
    } 
} 

またはあなたのテスト(複数可)を使用してデータプロバイダレコードごとにテストクラスをしたい場合:

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

おかげmfulton26、実際にウル答えは便利ですが、私のシナリオは午前です動的なExcelのデータ行をオブジェクトから取得してデータプロバイダ経由で提供するので、コンストラクタと@ Factoryを使用した2番目のテストに設定された最初のテストと2番目のデータセットにデータを渡すことができます。各テストのデータプロバイダを記述する。あなたはこれでmを助けてください。 –

+0

@vasanths私が正しく理解しているかどうかわからない:データプロバイダのレコードごとに1つのテストクラスが必要だと言っていますか? – mfulton26

+0

私はabovの答えが私のためにうまくいけばそれほど好きではありませんが、各テストのためにdataproviderを言いたいのは、中央のdataproviderから渡すことができます(つまり、私はatmostだけを使用したいと思っています、ありがとうございます事前に –

関連する問題