在JUnit里面,可以使用CsvFileSource读取csv文件进行参数化测试,可是CSV文件不支持格式,编辑颇为麻烦,尤其是多次编辑,因此自然想到是否可以使用Excel文件,可以有各种格式,支持各类数据。
最新开源组件ExcelBDD提供了此功能,其maven导入代码如下
<dependency>
<groupId>com.excelbdd</groupId>
<artifactId>excelbdd-java</artifactId>
<version>1.4.1</version>
</dependency>
对于如下样子的Excel里面表格
参数化测试代码如下
import java.util.Map;
import org.junit.jupiter.params.ParameterizedTest;
import com.excelbdd.ExcelFileSource;
import com.excelbdd.TestWizard;
import static org.junit.jupiter.api.Assertions.*;
......
@ParameterizedTest
@ExcelFileSource(file = "excelbdd/DataTable.xlsx", sheet = "DataTable2")
void testGetDateFromExcelTable(Map<String, String> parameterMap) {
TestWizard w = new TestWizard(parameterMap);
assertEquals("Value1", w.get("Header01").substring(0, 6));
assertEquals("Value2", w.get("Header02").substring(0, 6));
// ......
assertEquals("Value8", w.get("Header08").substring(0, 6));
// real test automation implementation
}
@ExcelFileSource有五个参数:
file 文件名,缺省以resources为相对基准
brotherFolder 兄弟路径,改变相对基准到此路径的上级,一般不需要用
sheet Excel里面Sheet名称,缺省是第1个
headerRow 标题列,缺省第1行,一般不需要用
startColumn 数据区第1列在哪里,缺省是从第1列开始自动搜索数据区,一般不需要用
ExcelBDD的功能不止于使用Excel作为参数化测试来源,更加主要的功能是支持BDD,也是SBE。
参见 ExcelBDD Python指南https://blog.csdn.net/zhangmike/article/details/133815589?spm=1001.2014.3001.5501
ExcelBDD Guideline By Java Examplehttps://blog.csdn.net/zhangmike/article/details/118197580