TestNG中DataProvider和Factory之间有什么区别? [英] What's the difference between DataProvider and Factory in TestNG?

查看:122
本文介绍了TestNG中DataProvider和Factory之间有什么区别?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

何时使用DataProvider以及何时使用Factory?

When to use DataProvider and when to use Factory ?

推荐答案

TestNG工厂用于动态创建测试类的实例。如果您想要任何时候都不运行测试类,这非常有用。例如,如果您有一个登录站点的测试,并且您希望多次运行此测试,那么它易于使用的TestNG工厂,您可以在其中创建多个测试类实例并运行测试。

TestNG factory is used to create instances of test classes dynamically. This is useful if you want to run the test class any no of times. For example, if you have a test to login into a site and you want to run this test multiple times,then its easy to use TestNG factory where you create multiple instances of test class and run the tests.

public class WebTestFactory {      
  //createInstances method will create 10 objects of WebTest class
  @Factory     
  public Object[] createInstances() {      
   Object[] result = new Object[10];       
   for (int i = 0; i < 10; i++) {      
      result[i] = new WebTest(i);      
    }      
    return result;     
  }  

现在测试类:

public class WebTest {     
  private int m_numberOfTimes;     
  public WebTest(int numberOfTimes) {      
    m_numberOfTimes = numberOfTimes;       
  }    

  @Test    
  public void testServer() {       
   //Code to test the application   
  }    
}    

您的testng.xml只需要引用包含工厂方法的类,因为测试实例本身将在运行时:

Your testng.xml only needs to reference the class that contains the factory method, since the test instances themselves will be created at runtime:

<class name="WebTestFactory" />  

工厂方法可以像@Test和@ Before / After一样接收参数,它必须返回Object [ ]。返回的对象可以是任何类(不一定是与工厂类相同的类)。

The factory method can receive parameters just like @Test and @Before/After and it must return Object[]. The objects returned can be of any class (not necessarily the same class as the factory class).

然而,dataprovider用于为测试提供参数。如果为测试提供数据提供者,则每次运行测试时将使用不同的值集。这对于您希望每次都登录到具有不同用户名和密码集的网站的情况非常有用。

Whereas, dataprovider is used to provide parameters to a test. If you provide dataprovider to a test, the test will be run taking different sets of value each time. This is useful for a scenario like where you want to login into a site with different sets of username and password each time.

public class DataProviderTest {

    @Test(dataProvider= "data")
    public void TestUltimatixFromExcelData(String userName,String password) {
        WebDriver driver; 
        driver=new FirefoxDriver();
        //Test to login into a site
    }

    @DataProvider(name="data")
    public static Object[][] dataProviderTest() throws Exception{

        Object[][] returnArray={new Object[]{"username1","password1"},new Object[]{"username2","password2"},new Object[]{"username3","password3"}
        };
        return returnArray;
    }

}

这篇关于TestNG中DataProvider和Factory之间有什么区别?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆