【问题标题】:Csv data pass Test methodcsv数据通过测试方法
【发布时间】:2021-12-30 00:22:37
【问题描述】:

我尝试将 CSV 数据传递给我的测试方法。

这是我的代码:CSV 文件有 3 列:

  1. 测试编号
  2. 电子邮件
  3. 名字

用户数据.java

public class UserData {
    private String TestNumber;
    private String email;
    private String FirstName;
    
    //Getters and Setters

}

数据提供者类:

 @DataProvider(name = "customer" )
   public static Object[][] getFilterValues() throws InvalidFormatException, IOException, InterruptedException, CsvException {
        CSVReader reader= new CSVReaderBuilder(new FileReader("/home/dell/scripts/TEST/Automation - CSV/src/TestData/User.csv")).
                withSkipLines(1).
                build();

        List<UserData> csv_objectList=reader.readAll().stream().map(data-> {
            UserData csvObject= new UserData();
            csvObject.setTestNumber(data[0]);
            csvObject.setEmail(data[1]);
            csvObject.setFirstName(data[2]);
            return csvObject;
        }).collect(Collectors.toList());


        UserData[] cellData = csv_objectList.toArray(new UserData[csv_objectList.size()]);
        Object[][] data = new Object[cellData.length][3];

        for(int i = 0; i <cellData.length; i++) {

            data[i][0] = cellData[i].getTestNumber();
            data[i][1] = cellData[i].getEmail();
            data[i][2] = cellData[i].getFirstName();


        }
       
        return data;
    }

测试方法:

public class UserCreate extends Base {

    @Test( dataProvider = "customer", dataProviderClass = GetUserData.class)
    public  void   UserCreate (UserData data) throws FileNotFoundException {

        System.out.println(data.getTestNumber());
    }
}

我尝试过这种方式来传递数据。但我得到这个错误:

[public void api.wapp.registation.UserCreate.UserCreate(utilities.UserData) throws java.io.FileNotFoundException] has no parameters defined but was found to be using a data provider (either explicitly specified or inherited from class level annotation).
Data provider mismatch
Method: UserCreate([Parameter{index=0, type=utilities.UserData, declaredAnnotations=[]}])
Arguments: [(utilities.UserData) utilities.UserData@301ec38b,null,null]

【问题讨论】:

    标签: java testng dataprovider testng-dataprovider data-driven-tests


    【解决方案1】:

    您的测试方法需要 UserData 作为参数。但是您的数据提供者正在提供String, String, String。在数据提供者方法中,您将UserData 的值传递给对象数组,而不是传递UserData 对象本身。

    在数据提供者方法中,您要做的是将每个UserData 对象放在一个Object[] 中,这将组合成一个Object[][]

    return csv_objectList.stream()
                         .map(user -> new Object[]{ user }) // this array represents a single test case
                         .toArray(Object[][]::new);
    

    【讨论】:

      猜你喜欢
      • 2018-04-04
      • 1970-01-01
      • 2019-05-30
      • 1970-01-01
      • 1970-01-01
      • 2017-02-15
      • 1970-01-01
      • 1970-01-01
      • 2011-12-24
      相关资源
      最近更新 更多