【问题标题】:How to call a parameterized method (using dataprovider) from a different class?如何从不同的类调用参数化方法(使用 dataprovider)?
【发布时间】:2018-02-07 06:54:22
【问题描述】:

我遇到了一个问题,我创建了一个使用 dataprovider 的参数化方法。 DataProvider 和方法都在同一个类中创建。现在,我想从另一个类调用此方法,但它需要传递参数,我不能,因为它们是从 dataProvider 读取的。

我也尝试在不同的类中声明 dataProvider,但这不起作用。请提出一些解决方法。

注意:我有一个限制,我不能使用 TestNG.xml 来实现这个场景。

请在下面找到代码:

数据提供者:

@DataProvider(name = "TestSuite")
    public Object[][] dataSheetTraverser() {
        String SheetName = "ProgLang";
        datatable = new Xls_Reader(TestDataSheetPath_ProgLang);
        int rowcount = datatable.getRowCount(SheetName);
        Object result[][] = new Object[rowcount - 1][3];
        for (int i = 2; i < rowcount + 1; i++) {
            result[i - 2][0] = SheetName;
            result[i - 2][1] = i;
            result[i - 2][2] = datatable.getCellData(SheetName, "caseType", i);

        }
        return result;
    }

测试方法:

@Test(dataProvider="TestSuite_ProgLang",priority =2)
    public void TC_Verify_EditProgLang(String SheetName,int i, String caseType)
    {

        String test1= datatable.getCellData(SheetName, "Skills", i);
        String test2= datatable.getCellData(SheetName, "Version", i);
        String test3= datatable.getCellData(SheetName, "LastUsed", i);
        String test4= datatable.getCellData(SheetName, "ExperienceYr", i);
        String ExperienceMn = datatable.getCellData(SheetName, "ExperienceMn", i);

        proglang.FillForm_ProgLang(Skills, Version, LastUsed, ExperienceYr, ExperienceMn);

    }

我想从另一个类调用上述函数TC_Verify_EditProgLang。请提出建议。

【问题讨论】:

  • 等待 .... 你想从另一个类调用 (Unit ? ) 测试吗?
  • @Stultuske 不是单元测试。我也想从另一个班级执行相同的操作。
  • 好的,这是什么类型的测试?
  • 该方法也是 testNG 类中的 @test 方法

标签: java maven selenium-webdriver testng dataprovider


【解决方案1】:

您可以使用dataProviderClass 属性从其他类调用
在 @Test 和 Provider 方法必须是 static

public class StaticProvider {
      @DataProvider(name = "create")
      public static Object[][] createData() {
        return new Object[][] {
          new Object[] { new Integer(42) }
        };
      }
    }
    //different Class
    public class MyTest {
      @Test(dataProvider = "create", dataProviderClass = StaticProvider.class)
      public void test(Integer n) {
        // ...
      }
    }

请查看文档:dataProviders

【讨论】:

  • 问题是我必须将 DataProvider 和测试方法保留在同一个类中并从另一个类调用测试方法(即,我必须从其他地方调用 MyTest 类)
  • 您需要在其他类调用方法中为 MyTest 类创建对象。在您的场景中,您需要将数据传递给 method.new MyTest().TC_Verify_EditProgLang(....pass Parameters);
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-16
  • 1970-01-01
  • 2017-06-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多