자동화 테스트 과정에서 excel 데이터 드라이브를 어떻게 사용하는지 (아래)

10034 단어
지난 글에서 저는 csv 파일을 읽는 형식으로 테스트ng의 데이터 구동 주석을 연결하는 방법을 공유했습니다. 본고는 csv 파일을 excel 다중sheet 파일로 바꾼 후에 어떻게 해석하고 연결하는 방법을 공유하고자 합니다.
이것은 자바 jxl 라이브러리로 excel 파일을 처리하고testng이 받아들인object[][]]로 돌아가면 데이터 드라이브를 직접 연결할 수 있습니다. 다음 코드를 보십시오.
package cn.testfan.testng;

import java.io.File;
import java.io.IOException;

import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;

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

public class TestExcelWithDataProvider {

	public static Object[][] readData(String dataFile, String sheetName, int beginRowNum, int rowOffset,
			int beginColumnNum, int columnOffset) {
		return read(dataFile, sheetName, beginRowNum, rowOffset, beginColumnNum, columnOffset);
	}

	
	/**
	 * @param dataFile  
	 * @param sheetName excel sheet
	 * @param beginRowNum  
	 * @param rowOffset  
	 * @param beginColumnNum  
	 * @param columnOffset  
	 * @return
	 */
	private static Object[][] read(String dataFile, String sheetName, int beginRowNum, int rowOffset,
			int beginColumnNum, int columnOffset) {
		File excelFile = new File(dataFile);
		Workbook wb = null;
		Object[][] data = null;
		try {
			wb = Workbook.getWorkbook(excelFile);
			Sheet sheet = wb.getSheet(sheetName);
			if (sheet == null)
				return null;
			int rows = sheet.getRows();
			int cols = sheet.getColumns();
			if (rowOffset == 0) {
				rowOffset = rows - beginRowNum;
			} else if (rows < (beginRowNum + rowOffset)) {
				rowOffset = rows - beginRowNum;
			}
			if (columnOffset == 0) {
				columnOffset = cols - beginColumnNum;
			} else if (cols < (beginColumnNum + columnOffset)) {
				columnOffset = cols - beginColumnNum;
			}
			data = new Object[rowOffset][columnOffset];

			for (int i = beginRowNum; i < beginRowNum + rowOffset; i++) {
				for (int j = beginColumnNum; j < beginColumnNum + columnOffset; j++) {
					//   getCell(col,row);
					Cell cell = sheet.getCell(j, i);
					if (cell != null) {
						String celldata = cell.getContents().trim();
						data[i - beginRowNum][j - beginColumnNum] = celldata;
					}
				}
			}

		} catch (Exception e) {
			throw new RuntimeException(e);
		}
		return data;
	}
	
	//  
		@DataProvider(name = "getData")
		public static Object[][] getData() throws IOException {

			return readData("C:\\test\\testfan_excel.xls", "sheet1", 0, 0, 0, 0);
		}

		//  DataProvider 
		@Test(dataProvider = "getData")
		public void testSearch(String p1, String p2) {
			System.out.println(p1 + " " + p2);
		}

}

좋은 웹페이지 즐겨찾기