如何把excel 数据做dataprovide

1.  新建一个类,实现接口Iterator

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStream;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;

import jxl.Cell;
import jxl.Sheet;
import jxl.Workbook;

import org.testng.Assert;


 public class ExcelDataProvider implements Iterator<Object[]> {

    private Workbook book = null;
    private Sheet sheet = null;
    private int rowNum = 0;
    private int currentRowNo = 0;
    private int columnNum = 0;
    private String[] columnnName;
    private String path = null;
    private InputStream inputStream = null;
    public ExcelDataProvider(String fileName,String moduleName) {

        try {
            path = "TestData/" + fileName + ".xls";
            inputStream = new FileInputStream(path);
            book = Workbook.getWorkbook(inputStream);
            sheet = book.getSheet(moduleName);
            rowNum = sheet.getRows(); 
            Cell[] cell = sheet.getRow(0);
            columnNum = cell.length; 
            columnnName = new String[cell.length];
            for (int i = 0; i < cell.length; i++) {
                columnnName[i] = cell[i].getContents().toString();
            }
            this.currentRowNo++;
        } catch (FileNotFoundException e) {
            Assert.fail("文件路径错误" + "[" + path + "]");
        } catch (Exception e) {
            Assert.fail("数据文件错误" + path + "]");
        }
    }
   public boolean hasNext() {
        if (this.rowNum == 0 || this.currentRowNo >= this.rowNum) {

            try {
                inputStream.close();
                book.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
            return false;
        } else {
            if ((sheet.getRow(currentRowNo))[0].getContents().equals(""))
                return false;
            return true;
        }
    }
    public Object[] next() {
        Cell[] c = sheet.getRow(this.currentRowNo);
        Map<String, String> data = new HashMap<String, String>();
        for (int i = 0; i < this.columnNum; i++) {
            String temp = "";
            try {
                temp = c[i].getContents().toString();
            } catch (ArrayIndexOutOfBoundsException ex) {
                temp = "";
            }
            data.put(this.columnnName[i], temp);
        }
        Object object[] = new Object[1];
        object[0] = data;
        this.currentRowNo++;
        return object;
    }

    public void remove() {
        throw new UnsupportedOperationException("remove unsupported.");
    }
}

2 . 在testcase 中写个方法,获取数据

@DataProvider(name="excelData")
protected Iterator<Object[]> excel(Method method){
String fileName = this.getClass().getSimpleName();
String moduleName = method.getName();
return new ExcelDataProvider(fileName,moduleName);
}

 
原文地址:https://www.cnblogs.com/lgm1999/p/6233063.html