0

seleniumとjavaを使用したPage Object Model Automationの新機能です。私はページオブジェクトモデルを使用しており、各ページを単一のクラスとして持ち、そのページ内のアクションをメソッドとして使用しています。テストデータの読み込みを維持するのに優れています。クライアント番号、ポリシー番号、姓、ファーストネーム、ウェブレフェレンス、電子メールなど、さまざまなパラメータを使用してクライアントを検索するためのテストがあります......今は、メソッドシグネチャにすべてのパラメータを指定する必要があります。そうでなければ、テストはdataprovider不一致エラー。私は指定されたExcelシートから文字列配列を提供するGetDataメソッドを持っています。Selenium java testNG:testngテストメソッドで部分的にdataproviderデータを使用できますか?

テストメソッドのシグネチャで特定のテストに必要なパラメータのみを指定できるように、パラメータをオプションにすることはできますか?実際のテストでは、15のパラメータと追加の組み合わせがあります。 (これが不可能な場合は、16の異なるタブにデータを分割し、各テストごとにデータプロバイダを別々に定義する必要があります)。またはこれを達成するための他の方法?おかげ

現在のコード:

@DataProvider(name="ClientSearchData") 
 
\t public String[][] getTestData() { 
 
\t \t String[][] testRecords = getData("TestData_igo4.xlsx","ClientSearch"); 
 
\t \t return testRecords; 
 
\t } \t 
 

 
\t @BeforeTest 
 
\t public void setUp() { 
 
\t \t init(); \t \t \t 
 
\t } \t 
 

 
\t @Test(dataProvider="ClientSearchData") 
 
\t public void verifyClientSearchByClientNumber(String clientnumber, String policynumber, String surname, String webreference, String email) { 
 
     
 
\t //code for search by clientnumber 
 

 
\t } 
 

 
\t @Test(dataProvider="ClientSearchData") \t 
 

 
\t public void verifyClientSearchByPolicyNumber(String clientnumber, String policynumber, String surname, String webreference, String email) { 
 
     
 
\t //Code for search by policynumber 
 

 
\t }

私は、各テストのため、不必要なパラメータを避けるために、次のような何かをしたい。..

\t @DataProvider(name="ClientSearchData") 
 
\t public String[][] getTestData() { 
 
\t \t String[][] testRecords = getData("TestData_igo4.xlsx","ClientSearch"); 
 
\t \t return testRecords; 
 
\t } \t 
 

 
\t @BeforeTest 
 
\t public void setUp() { 
 
\t \t init(); \t \t \t 
 
\t } \t 
 
\t @Test(dataProvider="ClientSearchData") 
 
\t public void verifyClientSearchByClientNumber(String clientnumber) { 
 
     
 
\t //code for search by clientnumber 
 

 
\t } 
 

 
\t @Test(dataProvider="ClientSearchData") \t 
 

 
\t public void verifyClientSearchByPolicyNumber(String policynumber) { 
 
     
 
\t //Code for search by policynumber 
 

 
\t }

+0

getterメソッドとsetterメソッドを持つClientSearchDataのデータオブジェクトを作成します。 setterを使用してアクセスコードをExcelに設定します。データプロバイダから新しいObject [] [] - {{new ClientSearchDO(name、id ...)}、{new ClientSearchDO(name、id ...)}}を返します。 Testメソッドで、ClientSearchDOと入力するパラメータを変更します。ゲッターメソッドを使用して関連するデータにアクセスします。これもチェックしてください - http://testng.org/doc/documentation-main.html#parameters-dataproviders – Grasshopper

答えて

1

言います。 あなたは単に

@DataProvider(name = "testData") 
    public static Object[][] testDataProvider() { 

     return new Object[][] {new String[]{"a","b","c"}}; 
    } 

@Test(priority=3,dataProvider = "testData") 
    public void test1(String... str1) { 
     System.out.println("first string"+" "+str1[0]); 

    } 

    @Test(priority=4,dataProvider = "testData") 
    public void test2(String... str2) { 
     System.out.println("second string"+" " + str2[1]); 

    } 

以下上記プリント

first string a 
second string b 

キーが

EDITここにあるだけで、あなたのgetTestData 3つのドット...に応じて、データプロバイダを調整し、上記のコードのように行うことができます。

あなたVarargsなしで実際にそれを行うことができます。以下も同様です。

@Test(priority=3,dataProvider = "testData") 
    public void test1(String str1[]) { 
     System.out.println("first string"+" "+str1[0]); 

    } 

    @Test(priority=4,dataProvider = "testData") 
    public void test2(String str2[]) { 
     System.out.println("second string"+" " + str2[1]); 

    } 
1

データプロバイダは、それを呼び出すメソッドに基づいてモデル化できます。おそらく、メソッド名に基づいてロジックを記述することです。メソッドの名前に基づいてメソッドオブジェクトをデータプロバイダに渡し、オブジェクト[] []を作成します。

は、私が何を求めていることはVarargsと思い

public Object[][] dp(Method m) { 
key = m.getName.replace("verifyClientSearchBy",""); 
//From excel data, just fetch key column's values or put 
//logic here whatever is convenient 
//Build your Object[][] with only one value 
関連する問題