2017-08-29 75 views
0

我已经创建了一个读取一个包中的excel值的类,并且还有一个类以testng的形式检查了不同类中的登录。 我的ReadExcelFile.java是 包uat;如何给testng.xml中的路径赋予动态值

public class ReadExcelFile extends BeforeAfterSuite{ 

    @Test 
    @Parameters("filename") 
    public void readXLSXFile(String fileName) { 
     InputStream XlsxFileToRead = null; 
     XSSFWorkbook workbook = null; 
     try { 
      XlsxFileToRead = new FileInputStream(fileName); 

      //Getting the workbook instance for xlsx file 
      workbook = new XSSFWorkbook(XlsxFileToRead); 
     } catch (FileNotFoundException e) { 
      e.printStackTrace(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 

     //getting the first sheet from the workbook using sheet name. 
     // We can also pass the index of the sheet which starts from '0'. 
     XSSFSheet sheet = workbook.getSheet("Sheet1"); 
     XSSFRow row; 
     XSSFCell cell; 

     //Iterating all the rows in the sheet 
     Iterator rows = sheet.rowIterator(); 

     while (rows.hasNext()) { 
      row = (XSSFRow) rows.next(); 

      //Iterating all the cells of the current row 
      Iterator cells = row.cellIterator(); 

      while (cells.hasNext()) { 
       cell = (XSSFCell) cells.next(); 

       if (cell.getCellType() == XSSFCell.CELL_TYPE_STRING) { 
        System.out.print(cell.getStringCellValue() + " "); 
       } else if (cell.getCellType() == XSSFCell.CELL_TYPE_NUMERIC) { 
        System.out.print(cell.getNumericCellValue() + " "); 
       } else if (cell.getCellType() == XSSFCell.CELL_TYPE_BOOLEAN) { 
        System.out.print(cell.getBooleanCellValue() + " "); 

       } 
      } 
      System.out.println(); 
      try { 
       XlsxFileToRead.close(); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 
     } 
    } 



} 

和TestNG中我要传递的参数作为文件名与路径一起,但被硬编码,而不是我想送动态值 因为位置我打算以后此举是共享的路径。

回答

1

这里是你如何做到这一点

  • 卸下@Parameters
  • 杠杆的依赖JVM参数说filename能够选择性地接受实际位置,如果没有提供定义的JVM参数的默认值。

您的代码可以像下面

@Test 
public void readXLSXFile() { 
    //To provide a different value for the excel sheet, use the JVM argument: -Dfilename 
    //For e.g., -Dfilename=src/test/resources/anotherdata.xls 
    //If this JVM argument is not provided, 
    //then the file name is defaulted to src/test/resources/data.xls 
    String fileName = System.getProperty("filename", "src/test/resources/data.xls"); 
    InputStream XlsxFileToRead = null; 
    XSSFWorkbook workbook = null; 
    //Rest of the code goes here 
}