【问题标题】:how to pass more parameters using TestNG DataProvider (csv)如何使用 TestNG DataProvider (csv) 传递更多参数
【发布时间】:2021-12-23 16:39:18
【问题描述】:
 public void UserConsentCreate(String TestNumber,String email,String lastName,String firstName,String deviceCode, String appVersion,String phone,String countryCode,String loginPassword,String dob,String baseUrl, String contactViaEmail, String contactViaSMS,String address1, String address2, String city, String postcode, String ukResidentConfirmation, String notificationConsent, String locationConsent
            ,String hasMedicalCondition, String hasAwaitingDiagnosis) throws IOException {
int version  = MaintreeVersion(TestNumber);
        System.out.println(version);
        JSONObject body =new JSONObject();
        body.put("personReference",dataReader.PERSONREFERENCE_PROPERTY_READER(TestNumber));
        body.put("contactViaEmail",contactViaEmail);
        body.put("contactViaSMS",contactViaSMS);
        body.put("mainTreeVersion",version);

        JSONObject auidtbody =new JSONObject();
        auidtbody.put("localTime", dtf.format(now));
        auidtbody.put("GMTTime", dtf.format(now));
        auidtbody.put("appRequestedTime", dtf.format(now));
        auidtbody.put("agentId", "1");
        auidtbody.put("agentName", "App");
        auidtbody.put("channel", "APP");
        auidtbody.put("deviceCode","1234567890");

        body.put("audit",auidtbody);

}

我使用 CSV 文件来获取数据 数据提供者代码

 @DataProvider(name = "customer" )
        public static Object[][] getUserData()  throws IOException, CsvValidationException {
            **String xlFilePath = System.getProperty("user.dir") + "/src/TestData/User.csv";
            String[] line;
            List<String[]> arrlist = new ArrayList<String[]>();
            CSVReader reader = new CSVReader(new FileReader(xlFilePath));
            while ((line = reader.readNext()) != null) {
                arrlist.add(line);
            }
            int index = 0;
            arrlist.remove(index);
            int rowCount = arrlist.size();
            int columnCount = arrlist.get(0).length;
            String customerData[][] = new String [rowCount][columnCount];
            for(int i = 0 ; i < rowCount ; i++) {
                String[] eachRow = arrlist.get(i);
                for(int j = 0 ; j < columnCount ; j++) {
                    customerData[i][j] = eachRow[j];
                }
            }
            return customerData;
        }

还有其他方法可以声明测试方法的参数吗?一个参数更改我想更改每个方法。如何解决这个问题。 我尝试使用 String args[] 的工作方式。 我想知道有没有其他解决方案?

【问题讨论】:

  • 非常相似的问题:stackoverflow.com/q/65662946/7804477
  • 谢谢@GauthamM。我对如何将数据提供者方法更改为使用 setters 数据有疑问
  • “使用setter数据”是什么意思?
  • in this question-answer stackoverflow.com/q/65662946/7804477 这部分:CellData 与每行的相关值,而不是返回 String[][] 返回 CellData[]...
  • 一旦你创建了一个像CellData这样的类以及相关的字段和他们的setter方法,你可以为每一行创建一个新的CellData对象,然后设置像cellData.setTestNumber(eachRow[0]); cellData.setEmail(eachRow[1]);这样的值。

标签: testng dataprovider objectdataprovider


【解决方案1】:

这里最好的方法是做一个数据类。
在上述情况下,我看到有用户数据和一些关于医疗状况的数据。因此,根据您的要求,您可以分为两个类 User 和 UserMedicalData 或使用一个类。

创建一个类的对象,而不是创建一个字符串数组。下次出现新值时,您可以简单地添加到您的类和数据提供者设置器中,并为您的所有方法使用相同的签名。

【讨论】:

    猜你喜欢
    • 2010-10-14
    • 2015-07-08
    • 1970-01-01
    • 1970-01-01
    • 2019-11-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-06
    相关资源
    最近更新 更多