在RFT中使用Excel進行資料驅動測試

TIB發表於2010-01-16

QTP 中,可以 通過 COM訪問 Excel ,或者通過 ADO 以資料庫查詢的方式訪問 Excel 中儲存的資料。而在 RFT 中,則好像沒有這麼直接的用法。需要匯入專門處理 Excel 資料的 JXL 包:

http://www.andykhan.com/jexcelapi/

JExcelApi is a Java API for reading, writing and modifying the contents of Excel spreadsheets

 

 

封裝一個處理 Excel 的類出來:

package Lib;

import java.io.FileInputStream;

import java.io.FileOutputStream;

import jxl.Cell;

import jxl.Sheet;

import jxl.Workbook;

import jxl.write.Label;

import jxl.write.WritableSheet;

import jxl.write.WritableWorkbook;

 

public class ExcelService {

 

       private String path = null;

       private String sheetname = null;

      

       public ExcelService(String FilePath,String SheetName){

         path = FilePath;

         sheetname = SheetName;

       }

      

         public String read(int colum, int row) throws Exception {

                FileInputStream fileInputStream = new FileInputStream(path);

                Workbook workbook = Workbook.getWorkbook(fileInputStream);

                Sheet sheet = workbook.getSheet(sheetname);

                Cell cell = sheet.getCell(colum, row);

                String content = cell.getContents();

                workbook.close();

                fileInputStream.close();

                return content;

                }

        

         public int getRowCount() throws Exception {

                FileInputStream fileInputStream = new FileInputStream(path);

                Workbook workbook = Workbook.getWorkbook(fileInputStream);

                Sheet sheet = workbook.getSheet(sheetname);

                int count = sheet.getRows();

                workbook.close();

                fileInputStream.close();

                return count;

                }

        

         public int getClumnCount() throws Exception {

                FileInputStream fileInputStream = new FileInputStream(path);

                Workbook workbook = Workbook.getWorkbook(fileInputStream);

                Sheet sheet = workbook.getSheet(sheetname);

                int count = sheet.getColumns();

                workbook.close();

                fileInputStream.close();

                return count;

                }

 

}

 

然後使用 Excel 資料作為資料驅動的資料來源:

    public void testMain(Object[] args)

    {

          ExcelService excel = new ExcelService( "D://RFT//RFT_Project//DataDriven//Data//TestExcelData.xls" , "Sheet1" );

          try {

            int rowCount = excel.getRowCount();

            int colCount = excel.getClumnCount();

            for ( int i=0;i<rowCount;i++)

            {

                System. out .println( "new line:" );

                for ( int j=0;j<colCount;j++){

                    System. out .println(excel.read(j, i));//取到Excel的每個單元格的資料

                }

            }

          } catch (Exception e) {

            e.printStackTrace ();

          }

                      

    }

 

 

相關文章