如何为testng.xml中的路径赋予动态值

时间:2017-08-29 13:00:28

标签: java testng

我已经创建了一个用于读取一个包中的excel值的类,还有一个类用于检查登录,这个类以testng的形式存在于不同的类中。 我的ReadExcelFile.java是 包uat;

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 个答案:

答案 0 :(得分: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
}