有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何在TestNG框架中的@BeforeClass方法中使用数据驱动测试

希望在@BeforeClass方法中逐个获取URL,并在不同的@Test方法中执行操作

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

约束条件:-

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

  • @dataProvider中的URL总是在更改。我们在运行时获取URL

我们如何应对这种情况

简言之,框架架构:-

     @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) 个答案

  1. # 1 楼答案

    是的,@Factory annotation将解决您的问题

    @Factory(dataProvider = "getUrls")
            public SEOErrorFactoryResetBeforeClass(String pagUrl) {
                this.pagUrl = pagUrl;
            }
    
  2. # 2 楼答案

    使用

    context.getCurrentXmlTest().getParameters();

    像这样:

      @SuppressWarnings("deprecation")
      @BeforeClass
      public void setUp(ITestContext context) {
      System.out.println(context.getCurrentXmlTest().getParameters());    
    
      }
    
  3. # 3 楼答案

    使用Factory方法和dataProvider方法, 它创建了一个多实例

     @Factory(dataProvider = "getUrls")
            public SEOErrorFactoryResetBeforeClass(String pagUrl) {
                this.pagUrl = pagUrl;
            }
    
  4. # 4 楼答案

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