【问题标题】:Overloading Selenium WebDriver Test Cases with DataProvider使用 DataProvider 重载 Selenium WebDriver 测试用例
【发布时间】:2015-06-08 18:45:22
【问题描述】:

正如标题所说,我一直试图重载 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

我的想法已经用完了...完全有可能这根本无法完成,但这似乎是一个非常基本的问题,我一定遗漏了一些东西!

感谢您的帮助!

【问题讨论】:

  • 根据您的代码,您将 2 组数据传递给 2 个方法,因此 2 个将通过,2 个将失败,您的代码不会帮助您获得预期的结果。不能使用 2 个数据提供者吗?
  • @skumar 有趣的是,这不是我得到的输出。这是我的输出:The only value provided was a string =============================================== TestSuite Total tests run: 3, Failures: 2, Skips: 0 ===============================================
  • @skumar 我已经通过第二种测试方法和第二种数据提供者获得了类似的功能,但我不应该这样做!

标签: java testng overloading


【解决方案1】:

我认为您可以在这里使用 reflect.Method 概念。我已经复制了TestNG文档,请参考 http://testng.org/doc/documentation-main.html#parameters-dataproviders了解更多详情

如果您将@DataProvider 声明为将 java.lang.reflect.Method 作为第一个参数,TestNG 将传递此第一个参数的当前测试方法。当多个测试方法使用相同的 @DataProvider 并且您希望它根据它提供数据的测试方法返回不同的值时,这特别有用。 例如,以下代码在其@DataProvider 中打印测试方法的名称:

@DataProvider(name = "dp")

public Object[][] createData(方法 m) {

System.out.println(m.getName()); // 打印测试方法名

return new Object[][] { new Object[] { "Cedric" }}; }

@Test(dataProvider = "dp")

public void test1(String s) { }

@Test(dataProvider = "dp")

public void test2(String s) { }

因此会显示:

查看源打印?

测试1

测试2

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-12-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多