我们能否确定@beforesuite在数据提供者之前被调用?

时间:2019-09-15 15:23:29

标签: java automated-tests testng-dataprovider test-data

我们可以按照以下方法初始化测试数据吗?我要实现两点。

  1. 需要从文件中初始化/加载一次测试数据,并在所有数据提供程序中使用相同的测试数据。应在@beforesuite类中实现测试数据加载器。
  2. 在@test方法中同时需要来自dataprovider的数据和来自testNG文件的参数。

    @BeforeSuite
    @Parameters(value = { "test_data_file" })
    public static synchronized void init(String test_data_file) {
        TestDataFactory.load(test_data_file);       
    }    
    @Test(dataProvider="dp_dummy",dataProviderClass = DP_1.class)
    public void testDummyAPI(TestData test_data,ITestContext context){
        String param = context.getCurrentXmlTest().getParameter("param");
    }        
    @DataProvider(name = "dp_dummy")
    public Object[][] getDataFromDataprovider(ITestContext context) {    
        List<TestData> test_data_collection = TestDataFactory.getTestData(targated_test_data);
        Object[][] test_data_set = new Object[test_data_collection.size()][1];    
        for(TestData test_data : test_data_collection)
            test_data_set[i++][0] = test_data;    
         return test_data_set;}
    

1 个答案:

答案 0 :(得分:0)

假设您正确创建了test_data_set,就可以达到第二个目的

 @Test(dataProvider="dp_dummy",dataProviderClass = DP_1.class)
    public void testDummyAPI( String p, Object[][] ob){
      System.out.println(p);      
      System.out.println(ob[0][0]);

    }   

    @DataProvider(name = "dp_dummy")
    public Object[][] getDataFromDataprovider(ITestContext context) {    
        List<TestData> test_data_collection = TestDataFactory.getTestData(targated_test_data);
        Object[][] test_data_set = new Object[test_data_collection.size()][1];    
        for(TestData test_data : test_data_collection)
            test_data_set[i++][0] = test_data;    
          String param = context.getCurrentXmlTest().getParameter("param");

           return new Object[][] {

               { param,  test_data_set}
           };
    }