2021-04-13

Jmter-将测试结果输出到Excel中🧡

一、环境准备

1.下载jxl.jar包CWResultFile.jar 提取码:1020

jxl.jar是通过java操作excel表格的工具类库,是由java语言开发而成的。

2.将下载的jxl.jar和CWResultFile.jar包拷贝在ext扩展库下

eg:E:\prgram\apache-jmeter-5.3\lib\ext;

3.准备两个CVS格式的文档,其中一个内容为测试数据文档,另外一个文档为设计的测试用例文档;
在这里插入图片描述
在这里插入图片描述
4.某系统登录脚本已编写好,可使用固定用户名及口令进行登录;

二、编写脚本

1.CVS保存测试数据,上传至CVS Data Set Config,然后参数化登录的帐号及密码,变量名之间用‘,’隔开;在这里插入图片描述
2.CVS保存测试用例,上传至CVS Data Set Config,然后参数化用例编号、用例标题及预期结果,变量名之间用‘,’隔开;
在这里插入图片描述
3.参数化http请求参数值;
在这里插入图片描述
4.在POST请求下,添加正则表达式,提取响应数据,存放在变量fResult中;
在这里插入图片描述
5.创建一个仅一次控制器(逻辑控制器),使得最后生成的Excel文件只有一个;

6.添加一个beanshell取样器(放在仅一次控制器下),用户创建Excel用例模板,在beanshell里调用jar包里的创建Excel文件方法,并将测试模板的filePath存到jmeter里;

t=new CWOutputFile();
String filePath=t.cOutputFile("测试结果");
vars.put("filePath",filePath);//转为jMeter变量,方便后期获取。

7.将测试结果写入Excel,添加一个新的beanshell取样器;

t=new CWOutputFile();
String filePath=vars.get("filePath");
String caseNo=vars.get("caseNo");
String testPoint=vars.get("testPoint");
String testData="{\"loginName\":\"${loginName}\",\"password\":\"${password}\"}";
String preResult=vars.get("preResult");
String fResult=vars.get("fResult");//用get方法可以确保获取到的是字符串,里面传递的是变量名,不需要用${变量名}这种方式
t.wOutputFile(filePath,caseNo,testPoint,testData,preResult,fResult);

8.最后生成格式为:测试结果_outPut__20210414001257.xls的结果文档;在这里插入图片描述
附录:eclipse安装包
代码实现:
1.新建一个Java Project–>CWResultFile,并导入jxl.jar包,如下所示:
在这里插入图片描述
在这里插入图片描述
2.创建一个名为CWOutputFile.java的文件;
3.将代码全部拷贝至该文件中;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.text.SimpleDateFormat;
import java.util.Date;
import jxl.Cell;
import jxl.JXLException;
import jxl.Workbook;
import jxl.format.Alignment;
import jxl.format.Colour;
import jxl.format.VerticalAlignment;
import jxl.read.biff.BiffException;
import jxl.write.Label;
import jxl.write.WritableCellFormat;
import jxl.write.WritableFont;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;
import jxl.write.WriteException;
import jxl.write.biff.RowsExceededException;
public class CWOutputFile {
	/*
	 * wOutputFile方法写结果文件,wOutputFile(文件路径,案例编号,用例编号,测试数据,预期结果,实际结果)
	 */	
	public void wOutputFile(String filePath,String caseNo,String testPoint,String testData,String preResult,String fResult) throws IOException, BiffException, WriteException{
		File outPut=new File(filePath);
		String result="";
		InputStream instream=new FileInputStream(filePath);
		Workbook readWB=Workbook.getWorkbook(instream);
		WritableWorkbook wBook=Workbook.createWorkbook(outPut, readWB);//根据文件创建一个操作对象;
		WritableSheet readSheet=wBook.getSheet(0);
		//int rsColumns=readSheet.getColumns();//获取sheet表中所包含的总列数
		int rsRows=readSheet.getRows();//获取sheet表中所包含的总行数
		WritableFont font=new WritableFont(WritableFont.createFont("宋体"),10,WritableFont.NO_BOLD);//字体样式
		WritableCellFormat wcf=new WritableCellFormat(font);
		Cell cell1=readSheet.getCell(0, rsRows);
		if(cell1.getContents().equals("")) {
			Label lableTest1=new Label(0,rsRows,caseNo);//第1列-用例编号;
			Label lableTest2=new Label(1,rsRows,testPoint);//第2列-用例标题;
			Label lableTest3=new Label(2,rsRows,testData);//第3列-测试数据;
			Label lableTest4=new Label(3,rsRows,preResult);//第4列-预期结果;
			Label lableTest5=new Label(4,rsRows,fResult);//第5列-实际结果;
			if(preResult.equals(fResult)) {
				result="通过";
				wcf.setBackground(Colour.BRIGHT_GREEN);//通过案例则标注绿色
			}else {
				result="不通过";
				wcf.setBackground(Colour.RED);//不通过案例则标注红色
			}
			Label lableTest6=new Label(5,rsRows,result,wcf);//第6列-执行结果;
			readSheet.addCell(lableTest1);
			readSheet.addCell(lableTest2);
			readSheet.addCell(lableTest3);
			readSheet.addCell(lableTest4);
			readSheet.addCell(lableTest5);
			readSheet.addCell(lableTest6);
		}
		wBook.write();
		wBook.close();
	}
	/** cOutputFile方法创建输出文件,传入参数为交易类型,如开户等;* cOutputFile方法返回文件路径,作为wOutputFile的入参;
	 * @throws IOException 
	 * @throws WriteException */
	public String cOutputFile(String tradeType) throws IOException, WriteException {
		// TODO Auto-generated method stub
		String temp_str="";
		Date dt=new Date();
		SimpleDateFormat sdf =new SimpleDateFormat("yyyyMMddHHmmss");
		temp_str=sdf.format(dt);//获取时间戳,相对默认路径为apache-jmeter-3.1\bin
		String filePath="E:\\\\"+tradeType+"_outPut_"+"_"+temp_str+".xls";//以时间戳命名结果文件,确保唯一
		File outPut=new File(filePath);
		if(!outPut.isFile()) {
			outPut.createNewFile();//如果指定文件不存在,则新建该文件;
			WritableWorkbook writeBook=Workbook.createWorkbook(outPut);
			WritableSheet sheet=writeBook.createSheet("输出结果",0);//creatSheet(sheet名称,第几个sheet)
			WritableFont headFont=new WritableFont(WritableFont.createFont("宋体"),11,WritableFont.BOLD);//字体样式
			WritableCellFormat headwcf=new WritableCellFormat(headFont);
			headwcf.setBackground(Colour.GRAY_25);//灰色颜色
			sheet.setColumnView(0, 11);//设置列宽度setCoumnView(列号,宽度)
			sheet.setColumnView(1, 30);
			sheet.setColumnView(2, 35);
			sheet.setColumnView(3, 35);
			sheet.setColumnView(4, 18);
			sheet.setColumnView(5, 11);
			headwcf.setAlignment(Alignment.CENTRE);//设置文字居中对齐方式
			headwcf.setVerticalAlignment(VerticalAlignment.CENTRE);//设置垂直居中
			Label label00=new Label(0, 0, "用例编号", headwcf);//Lable(列号,行号,内容);
			Label label10=new Label(1, 0, "用例标题", headwcf);
			Label label20=new Label(2, 0, "测试数据", headwcf);
			Label label30=new Label(3, 0, "预期结果", headwcf);
			Label label40=new Label(4, 0, "实际结果", headwcf);
			Label label50=new Label(5, 0, "执行结果", headwcf);
			
			sheet.addCell(label00);
			sheet.addCell(label10);
			sheet.addCell(label20);
			sheet.addCell(label30);
			sheet.addCell(label40);
			sheet.addCell(label50);
			writeBook.write();
			writeBook.close();
		}
		return filePath;
	}

}

4.导出为jar文件;
在这里插入图片描述

注:导出的jar包的名称需为:CWResultFile.jar,导出后的jar包放在lib/ext下

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值