操屁眼的视频在线免费看,日本在线综合一区二区,久久在线观看免费视频,欧美日韩精品久久综

新聞資訊

    出品|軟件測試網

    項目背景

    系統有個Excel導入功能,需要通過Excel來構造測試數據,生成測試數據之后,上傳Excel并導入驗證。

    如果數據驗證出錯,需要給出錯誤提示;如果數據校驗通過,則執行導入操作。

    我們主要通過的Easy Excel框架來做。

    期望的生成Excel數據模板如下:

    生成了人員的工號、姓名、證件類型、身份證、民族等等字段。

    這里我們使用java語言,用到的工具類如下:

    java-faker

    構造測試數據時,需要絞盡腦汁浪費時間,可以釋放你的生產力。

    easy-excel

    easy-excel重寫了poi對07版Excel的解析,能夠原本一個3M的Excel用POI sax依然需要100M左右內存降低到幾M,并且再大的Excel不會出現內存溢出。

    03版依賴POI的sax模式,在上層做了模型轉換的封裝,讓使用者更加簡單方便。

    作用類上,生成所有成員變量的/方法,作用于成員變量上,生成該成員變量的/方法獲取網站完整源碼工具,可以設定訪問權限及是否懶加載等。

    代碼解析

    代碼調用鏈

    我們先從最底層的Model層來說:以一個項目模板為例,構建Model,此時一個Excel的sheet,就對應一個model。

    這里我們需要注意的是 @ 和 @注解:

    package org.example.excel.model.emp;import com.alibaba.excel.annotation.ExcelProperty;import lombok.Data;
    //個人信息更新@Datapublic class EmpInformationUpdateModel {
    @ExcelProperty(value = "*F00730-工號", index = 0) private String empJobNumber;
    @ExcelProperty(value = "*F00719-姓名", index = 1) private String empName;
    @ExcelProperty(value = "*F00721-英文名", index = 2) private String foreignName;
    @ExcelProperty(value = "F00741-昵稱", index = 3) private String nickName;
    @ExcelProperty(value = "*F00370-性別", index = 4) private String gender;
    @ExcelProperty(value = "*F00392-國籍", index = 5) private String nationality;
    @ExcelProperty(value = "*F00720-證件類型", index = 6) private String idCardType;
    @ExcelProperty(value = "*F00717-證件號碼", index = 7) private String idCardNumber;
    }

    (左右滑動查看完整代碼)

    Model層和Excel的列是一一對應的獲取網站完整源碼工具,以下面的注解為例子:

    @ExcelProperty(value = "*F00730-工號", index = 0)

    (左右滑動查看完整代碼)

    第一行是標題頭,第一行第一列的位置由0來表示,0,1,2,3,4…依次遞增,第一行第一列的標題名稱是*-工號。

    package org.example.excel.change;
    import com.github.javafaker.Faker;import org.example.excel.ExceptionTransferImport;import org.example.excel.constant.ChangeConstant;import org.example.excel.model.Employee;import org.example.excel.model.emp.EmpInformationUpdateModel;import org.example.excel.util.IdCardGenerator;import java.util.ArrayList;import java.util.List;import java.util.Locale;import java.util.Random;import java.util.logging.Logger;import static org.example.excel.util.RandomDateUtil.randomDate;
    //個人信息更新public class EmpInformationUpdate {
    //日志記錄 static java.util.logging.Logger logger = Logger.getLogger("com.hongtao.flywheel");
    //調用Model層的函數 public static List empInformationUpdateData(List empList) {
    //構建一個List來存放數據 List list = new ArrayList();
    //使用java-faker框架,來生成隨機姓名,身份證 Faker FAKER = new Faker(Locale.CHINA); Faker FAKEREN = new Faker(Locale.ENGLISH); IdCardGenerator idCardGenerator = new IdCardGenerator();
    //構建for循環,控制生成測試數據的條數 for (int i = 0; i < ExceptionTransferImport.CYCLESNUMBER; i++) {
    //調用了Model層,表示生成的單條數據的類型,和Model類一致 EmpInformationUpdateModel data = new EmpInformationUpdateModel(); data.setEmpName(empList.get(i).getEmpName()); data.setEmpJobNumber(empList.get(i).getEmpJobNumber()); //使用java-faker框架,來生成隨機姓名,身份證 data.setForeignName(FAKEREN.name().lastName() + new Random().nextInt(50)); data.setNickName(FAKEREN.name().lastName() + new Random().nextInt(50));
    //下面都是調用數據字典類數據 data.setIdCardType(new ChangeConstant().getValue(ChangeConstant.idCardType)); data.setNationality(new ChangeConstant().getValue(ChangeConstant.nationality)); data.setNation(new ChangeConstant().getValue(ChangeConstant.nation)); //List鏈表增加一條數據 list.add(data); } //返回鏈表 return list; }}

    (左右滑動查看完整代碼)

    數據字典類解析:配置數據字典,因為在有些數據是固定值,需要隨機選擇數據,所以用list來存儲這些數據字典。

    (new ChangeConstant().getValue(ChangeConstant.contractType);

    (左右滑動查看完整代碼)

    這句話是為了隨機獲取一個存在List內的數據字典。

    數據字典也是用list存放,通過方法隨機取一個值,如下:

        public static final List idCardType = Arrays.asList("中國護照", "臺灣居民來往大陸通行證", "外國護照", "居民身份證", "港澳居民來往內地通行證");    public static final List gender = Arrays.asList("男", "女");       public String getValue(List list) {        Random random = new Random();        int n = random.nextInt(list.size());        return list.get(n).toString();    }

    (左右滑動查看完整代碼)

    生成隨機時間的類

    ("2020-01-01", "2022-01-01")是隨機生成在開始時間和結束時間范圍內的一個日期值,函數如下:

    public static String randomDate(String beginDate,String endDate){        try {
    SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); Date start = format.parse(beginDate); Date end = format.parse(endDate);
    if(start.getTime() >= end.getTime()){ return null; } long date = random(start.getTime(),end.getTime());
    String dateString= asLocalDate(longToDate(date)).format(DateTimeFormatter.ofPattern("yyyy-MM" + "-dd")); return dateString; } catch (Exception e) { e.printStackTrace(); } return null; }

    (左右滑動查看完整代碼)

    java-faker的用法

    可以生成隨機的姓名、街道、公司、天氣、超級英雄、星球大戰等等等等。

    data.setForeignName(FAKEREN.name().lastName());data.setLuckyName(FAKER.funnyName().name());

    (左右滑動查看完整代碼)

    結合起來

    調用Easy Excel框架,生成Excel的方法,Main函數生成數據:

    String updateContractChangeFileName =                TestFileUtil.getPath() + "個人信息更新"+".xlsx";        EasyExcel.write(updateContractChangeFileName,                UpdateContractChangeModel.class).sheet("模板").doWrite(UpdateContractChange.updateContractChangeData(empInfomationList));

    (左右滑動查看完整代碼)

    結果展示

    總結

    在工作當中,我們經常遇到批量生成測試數據的需求,所以這個時候,我們可以借鑒網上成熟的生成隨機數據方法,Java-Faker框架,很方便的構造測試數據。

    再結合業務上的需求,引入了阿里巴巴的Easy Excel框架,站在前人的肩膀上,助力測試業務更好的開展。這樣子測試的工作才會越走越順,測試的效率也能夠不斷的提高~

    End

    -往期回顧-////

網站首頁   |    關于我們   |    公司新聞   |    產品方案   |    用戶案例   |    售后服務   |    合作伙伴   |    人才招聘   |   

友情鏈接: 餐飲加盟

地址:北京市海淀區    電話:010-     郵箱:@126.com

備案號:冀ICP備2024067069號-3 北京科技有限公司版權所有