首先,如果你是看到这个标题进来的
那我先泼你一盆冷水…这个不是多么的实用小工具(只是一个偶尔可以偷懒的工具)
当然,大神你如果拿过去再写的高深一点的话也可以
。。。
背景:当时候项目比较忙,很多需求都是同时进行测试。天天开需求分析会,很多案例需要写。在我看来,案例中很多的字段都是比较鸡肋的字段且耗时间的。那时候案例是写在excel上的,我就想着能不能通过POI来进行读写(其实具体怎么操作就是字符串如何处理而已),所以我这个小菜鸡能写出来的,基本上都没多少技术含量的。
大神看看笑笑就算了。
最主要的——写的案例没有太严格的要求。开会的时候,开发和业务看到用例名称知道你已经覆盖到这个点就行了(最重要是这一点)。
话不多说,直接上代码(身为一个菜鸡,说这话的时候感觉自己天下无敌-。 -)。

package AnLi;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

import tool_date.date;
  
public class anli_maker{
	static File src = null;
	static FileInputStream fis=null;
	static XSSFWorkbook wb=null;

	//第一次赋值的方法-主要是针对一些相同字段的信息
	public static  void fuzhi (String col,String value){        
        try{               
            // 指定excel的路径  
            
              
            //加载sheet,这里我们只有一个sheet,默认是sheet1  
            XSSFSheet sh1= wb.getSheetAt(0);  
            
            for(int j=0;j<sh1.getPhysicalNumberOfRows()-1;j++){
            	for(int k=1; k<22; k++){
                	// 第一行第二列内容进行比较
            		if(!sh1.getRow(0).getCell(k).getStringCellValue().trim().equals(col)){
            			continue;
            		}
    
                	sh1.getRow(j+1).getCell(k,Row.MissingCellPolicy.CREATE_NULL_AS_BLANK).setCellValue(value);                	
            	}
            	}
            // 保存文件  
            FileOutputStream fout=new FileOutputStream(new File(".\\Files_AnLi\\test-data.xlsx"));    
            
            //覆盖写入内容   
            wb.write(fout);    
            
            // 关闭文件  
            fout.close();  
					
        	
        } catch (Exception e){   
        	e.printStackTrace();
        	}
		}
		//第一次进行赋值,主要是针对可以批量赋值的部分
		public static void fuzhi_1(){
			
			//fuzhi("测试用例编号","001");
        	//fuzhi("测试要点编号","001");
        	fuzhi("所属子系统","新柜面");
        	fuzhi("涉及的关联系统","T24");
            //fuzhi("用例名称","");
        	//fuzhi("用例性质","");
        	fuzhi("优先级","1-高");
        	fuzhi("前置条件","准备测试数据");
        	fuzhi("步骤名","1");
        	//fuzhi("步骤描述","");
        	fuzhi("测试数据","");
        	//fuzhi("预期结果","");
        	fuzhi("设计者","小鱼炒辣椒");
        	fuzhi("创建日期",new date().datetime());
        	fuzhi("用例复用状态","已复用");
        	fuzhi("测试用例状态","已执行");
        	fuzhi("类型","手工测试");
        	fuzhi("审阅状态","已审阅");
        	fuzhi("执行日期",new date().datetime_2());       	
		}
		//第二次进行赋值,主要是针对无法批量赋值的字段
		public static void fuzhi_2(){
				fuzhi_1();    
		        try{               
		            XSSFSheet sh1= wb.getSheetAt(0);
		            
		            for(int j=0;j<sh1.getPhysicalNumberOfRows()-1;j++){
		            	
		            	
		                	// 根据“用例名称”中的正流程、反流程  来设置性质
		            	boolean status = sh1.getRow(j+1).getCell(5).getStringCellValue().contains("正交易");
		            		if(status){
		            			sh1.getRow(j+1).getCell(6,Row.MissingCellPolicy.CREATE_NULL_AS_BLANK).setCellValue("正用例");
		            		}else{
	            			sh1.getRow(j+1).getCell(6,Row.MissingCellPolicy.CREATE_NULL_AS_BLANK).setCellValue("反用例");
		            		}
		            		
		            		
		            		//用例描述------复制用例名称单元格内容
		            		sh1.getRow(j+1).getCell(9,Row.MissingCellPolicy.CREATE_NULL_AS_BLANK).setCellValue(
		            				sh1.getRow(j+1).getCell(5).getStringCellValue());
		            		
		            		//步骤描述-------具体通用的动作描述,会拿用例名称中的前八位作为其中一部分内容
		            		String tx=sh1.getRow(j+1).getCell(5).getStringCellValue().substring(0,8);
		            		sh1.getRow(j+1).getCell(11,Row.MissingCellPolicy.CREATE_NULL_AS_BLANK).setCellValue(
		            				"1.打开柜面,输入交易码"+tx+";"+
		            				"2.输入相关内容,点击提交;"+
		            				"3.查看结果"
		          
		            				);
		            		//预期结果---取决于 用例性质       正用例-交易成功     反用例-交易失败
		            		if(sh1.getRow(j+1).getCell(6).getStringCellValue().equals("正用例")){
			            		sh1.getRow(j+1).getCell(13,Row.MissingCellPolicy.CREATE_NULL_AS_BLANK).setCellValue("交易成功");
		            		}else{
			            		sh1.getRow(j+1).getCell(13,Row.MissingCellPolicy.CREATE_NULL_AS_BLANK).setCellValue("交易失败");
		            		}
		            }
		            FileOutputStream fout=new FileOutputStream(new File(".\\Files_AnLi\\test-data.xlsx"));  
		            wb.write(fout);    
		            fout.close();
		            } catch (Exception e){   
		        	e.printStackTrace();
		            }
		}
		public static  void fuzhi_3 (){
        	fuzhi_2();
	        try{               
	            XSSFSheet sh1= wb.getSheetAt(0);  
	            
	            for(int j=0;j<sh1.getPhysicalNumberOfRows()-1;j++){
	                	sh1.getRow(j+1).getCell(1,Row.MissingCellPolicy.CREATE_NULL_AS_BLANK).setCellValue(j+1);
	                	sh1.getRow(j+1).getCell(2,Row.MissingCellPolicy.CREATE_NULL_AS_BLANK).setCellValue(j+1);	                	
	        	}
	            FileOutputStream fout=new FileOutputStream(new File(".\\Files_AnLi\\test-data.xlsx"));      
	            wb.write(fout);    
	            fout.close();  
	        } catch (Exception e){   
	        	e.printStackTrace();
	        	}
			}
		
        public static void main(String[] args) {  
        	
        	src = new File("./Files_AnLi/test-data.xlsx");  
            
            // 加载文件  
            try {
    			fis = new FileInputStream(src);
    		
    		wb =new XSSFWorkbook(fis);
    	} catch (Exception e) {
    		// TODO Auto-generated catch block
    		e.printStackTrace();
    	}  
        	
			long t1 = System.currentTimeMillis();
        	fuzhi_3();
            long t2 = System.currentTimeMillis();
            System.out.println("      已完成所有     <陈曦组专用测试案例-赋值>!    "+"    用时 " + (t2 - t1) + " 毫秒");	
        }  
  
}

其实很简单,都是一些基础的字符串方法和IO的应用。
脚本可以根据你们自己的案例要求进行修改一下。
看下效果:运行前
小工具一:案例生成脚本

小工具一:案例生成脚本
运行的时候在控制台看到这句话,顿时回忆无限。
那段快乐的工作时光。
以上的功能可能比较简单,如果能给各位一点启发,那我就知足了。
-。 -

相关文章: