第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定

JUnit5中支持Excel數(shù)據(jù)驅(qū)動(dòng)

在我之前的手记Junit5中实现参数化测试中,我们提到过,Junit5能够使用CsvFileSource参数源来实现外部数据的引入并作为参数传递给测试方法。    
但实际应用中我们经常使用excel文件来保存测试数据或进行数据驱动。

今天就介绍下如何通过junit5的参数化方法,来支持Excel文件的参数化

MethodSource

Junit5当中新增的ParameterizedTest注解,可以在对应的测试方法中携带参数,并且支持多种参数源,参见前文Junit5中实现参数化测试

而其中的MethodResource方法可以自己定义一个参数实现方法

这里MethodSource所使用的参数方法有几个要求:

  • 返回Stream<Arguments>参数流或集合类型的的参数集

  • 静态引用

  • 本身不携带参数

这就给我们自行扩展通过Excel数据驱动提供了入口。

如我们定义一个测试用例,使用参数化方法,通过MethodSource使用ExcelMethod参数方法传入参数。代码如:

@ParameterizedTest@MethodSource("ExcelMethod")public void qiucaoTest(String person, int age, float salary){
  System.out.println(person + " " + age +" "+ salary);}

但是因为MethodSource方法的调用限制,本身不能携带参数,所以如果我们希望指定使用的Excel文件路径,以及具体的数据表Sheet。还必须进行一层扩展。ExcelMethod方法定义如下:

 static Stream<Arguments> ExcelMethod() {
    return getTestDataStreamFromExcelFile(".src	estdemoData.xlsx","Sheet1");}

POI库处理excel文件

ExcelMethod中我们定义了一个处理Excel文件的通用方法。这里可以使用通用的第三方Office文件处理库POI    
使用POI可以通过maven导入。这里主要有poi和ooxml两个依赖库需要使用

    <dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi</artifactId>
        <version>4.0.0</version>
    </dependency>

    <dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi-ooxml</artifactId>
        <version>4.0.0</version>
    </dependency>

引入POI后就可以利用POI提供的便利的excel数据处理功能,完成数据的读取

 public static Stream<Arguments> getTestDataStreamFromExcelFile(String excelFullPath,
      String sheetName){

    Stream<Arguments> returnStream = Stream.empty();
    //定义单元格数据格式处理对象
    DataFormatter myDataFormatter = new DataFormatter();

    //获取工作簿对象
    try(Workbook excelFile = WorkbookFactory.create(new File(excelFullPath),null,true)) {
      //获取工作表
      Sheet excelSheet1 = excelFile.getSheet(sheetName);
      //行数据处理,忽略标题行,行数据作为后续参数List
      for(Row row: excelSheet1){
        if(row.getRowNum()==0) {continue;}
        ArrayList<Object> rowArrayList = new ArrayList<>();
        //获取单元格数值,存入行List
        for (Cell cell : row) {
          rowArrayList.add(myDataFormatter.formatCellValue(cell));
        }
        //转换为MethodSource的Arguments对象
        Arguments arguments = Arguments.of(rowArrayList.toArray());
        //Arguments转换为Stream
        returnStream = Stream.concat(returnStream,Stream.of(arguments));
      }
    return returnStream;
    } catch (IOException e) {
      e.printStackTrace();
    }
    return returnStream;
  }

如此,我们就完成了通过Excel在Junit5中进行数据驱动测试的支持。

思考:我们的测试方法,现在需要匹配Excel数据,进行参数的个数和类型的匹配指定,有没有更好的方法可以更加灵活地兼容Excel数据内容呢?   

·························································································· 
欢迎大家关注实战课

接口自动化测试实战 - Java篇



點(diǎn)擊查看更多內(nèi)容
4人點(diǎn)贊

若覺(jué)得本文不錯(cuò),就分享一下吧!

評(píng)論

作者其他優(yōu)質(zhì)文章

正在加載中
軟件測(cè)試工程師
手記
粉絲
1.5萬(wàn)
獲贊與收藏
502

關(guān)注作者,訂閱最新文章

閱讀免費(fèi)教程

感謝您的支持,我會(huì)繼續(xù)努力的~
掃碼打賞,你說(shuō)多少就多少
贊賞金額會(huì)直接到老師賬戶
支付方式
打開(kāi)微信掃一掃,即可進(jìn)行掃碼打賞哦
今天注冊(cè)有機(jī)會(huì)得

100積分直接送

付費(fèi)專欄免費(fèi)學(xué)

大額優(yōu)惠券免費(fèi)領(lǐng)

立即參與 放棄機(jī)會(huì)
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)

舉報(bào)

0/150
提交
取消