如何在TestNG框架中的@BeforeClass方法中使用datadriven测试

时间:2015-08-10 06:36:38

标签: java selenium-webdriver webdriver testng testng-dataprovider

希望以@BeforeClass方法逐个获取网址,并使用不同的@Test方法执行操作。

@dataProvider只能与@Test方法一起使用而不能与@BeforeClass中的TestNG一起使用

约束: -

  • 实际上,所有@Test方法都是相互独立的,所以不能使用单一的测试方法。

  • @dataProvider中的网址始终在变化。我们在运行时获取网址

我们如何管理此类情景?

简短的框架架构: -

     @BeforeClass(dataProvider = "getTestUrls") 
        public void testPage(){
            driver.get(testUrls);
       }

      @Test(priority=1)
      @Test(priority=2)

     @DataProvider
        public Object [][] getTestUrls(){
            return new Object[][]   { { 1,"http://www.yahoo.com" }, {2,"http://www.google.com" } };
    }

4 个答案:

答案 0 :(得分:2)

将Factory方法与dataProvider方法一起使用, 它创建了一个多实例。

 @Factory(dataProvider = "getUrls")
        public SEOErrorFactoryResetBeforeClass(String pagUrl) {
            this.pagUrl = pagUrl;
        }

答案 1 :(得分:0)

使用POI jar文件使用数据驱动框架可以克服这些限制。 您可以从excel文件中获取测试URL,数据提供者有一些限制。

答案 2 :(得分:0)

是的,@ Factory注释将解决您的问题

@Factory(dataProvider = "getUrls")
        public SEOErrorFactoryResetBeforeClass(String pagUrl) {
            this.pagUrl = pagUrl;
        }

答案 3 :(得分:0)

只需使用

  

context.getCurrentXmlTest()getParameters();

像这样:

URI(str).tap { |uri| uri.query = nil }.to_s
#=> "https://habrahabr.ru/post/340400/"