簡體   English   中英

使用DataProvider重載Selenium WebDriver測試用例

[英]Overloading Selenium WebDriver Test Cases with DataProvider

就像標題所說的那樣,到目前為止,我一直在嘗試重載Selenium測試用例,但沒有成功。 這是我的代碼:

public class testClass {
    @Test(dataProvider="testProvider")
    public void testFunc(String value) throws Exception{
        System.out.println("The only value provided was a string");
    }

    @Test(dataProvider="testProvider")
    public void testFunc(String value, int myValue) throws Exception{
        System.out.println("The two values provided are a string and an integer");
    }

    @DataProvider(name="testProvider")
    public static Object[][] testProvider(){
        return new Object[][]{ {"someString"}, {"someString", 5} };
    }
}

當我運行此代碼時,第一個測試用例(僅通過“ someString”通過時)成功,但是第二個測試用例(當同時通過“ someString”和5時)失敗,並顯示以下消息:

org.testng.TestNGException:數據提供者試圖傳遞2個參數,但方法[已刪除項目結構] .testFunc需要1個

我的想法已經用完了...這完全有可能根本無法完成,但是這似乎是一個非常基本的問題,我必須丟失一些東西!

謝謝你的幫助!

我認為在這里您可以使用reflect.Method概念。 我已經復制了TestNG文檔,有關更多詳細信息,請參閱http://testng.org/doc/documentation-main.html#parameters-dataproviders

如果您聲明@DataProvider以java.lang.reflect.Method作為第一個參數,則TestNG將通過該第一個參數的當前測試方法。 當多個測試方法使用相同的@DataProvider且您希望它根據為其提供數據的測試方法返回不同的值時,此功能特別有用。 例如,以下代碼在其@DataProvider中打印測試方法的名稱:

@DataProvider(名稱=“ dp”)

public Object [] [] createData(Method m){

的System.out.println(m.getName()); //打印測試方法名稱

返回new Object [] [] {new Object [] {“ Cedric”}}; }

@Test(dataProvider =“ dp”)

公共無效test1(String s){}

@Test(dataProvider =“ dp”)

公共無效test2(String s){}

並因此顯示:

查看原圖?

TEST1

TEST2

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM