jmeter写入结果到excel

(一)准备环境

1、下载jxl.jar包,放到jmeter的安装目录bin目录下。
2、重启jmeter
excel中一般有三个要素:workbook,sheet,cell
操作步骤:
1、获取excel的文件名
2、获取表单名
3、获取单元格的坐标
4、获取结果,写入到对应的单元格里面。
5、需要利用beanshell写java代码,获取对应的数据写入excel里面去

(二)jmeter测试数据结构准备

准备csv文件,这是测试用例的输入数据,接口中有4个参数,文件中准备了4列数据。执行2条用例,所以有2行
在这里插入图片描述

下图为输出结果的测试用例

在这里插入图片描述

jmeter进行csv参数化。

在这里插入图片描述

报文中,入参参数化。

在这里插入图片描述

(三)准备代码

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.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;

public class CWOutputFile {
	/**
	 * 写结果文件
	 * @param filePath
	 * @param caseNo
	 * @param testPoint
	 * @param preResult
	 * @param fresult
	 */
	public void wOutPutFile(String filePath,String caseNo,String testPoint,String testData,String preResult,String fresult) {
		File output=new File (filePath);
		String result="";
		try {
			//输入流
			InputStream inputStream=new FileInputStream(filePath);
			//创建workbook
			Workbook readwb=Workbook.getWorkbook(inputStream);
			//根据文件创建一个操作对象
			WritableWorkbook wbook = Workbook.createWorkbook(output, readwb);
			//得到sheet
			WritableSheet readSheet = wbook.getSheet(0);
			//获取总行数
			int rsRows=readSheet.getRows();
			//字体样式设置
			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 labetest1=new Label(0,rsRows,caseNo);
				Label labetest2=new Label(1,rsRows,testPoint);
				Label labetest3=new Label(2,rsRows,testData);
				Label labetest4=new Label(3,rsRows,preResult);
				Label labetest5=new Label(4,rsRows,fresult);
				if(preResult.equals(fresult)) {
					result="通过";
					wcf.setBackground(Colour.BRIGHT_GREEN);
				}else {
					result="不通过";
					wcf.setBackground(Colour.RED);
				}
				Label labetest6=new Label(5, rsRows, result, wcf);
				readSheet.addCell(labetest1);
				readSheet.addCell(labetest2);
				readSheet.addCell(labetest3);
				readSheet.addCell(labetest4);
				readSheet.addCell(labetest5);
				readSheet.addCell(labetest6);
			}
			wbook.write();
			wbook.close();
		} catch (BiffException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	public String cOutputFile(String tradeType) {
		String filePath="";
		try {
		String temp_str="";
		Date date=new Date();
		SimpleDateFormat sdf=new SimpleDateFormat("yyyyMMddHHmmss");
		temp_str=sdf.format(date);
		 filePath="d:\\\\"+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);
				WritableFont headfont=new WritableFont(WritableFont.createFont("宋体"),11,WritableFont.BOLD);
				WritableCellFormat headwcf=new WritableCellFormat(headfont);
				headwcf.setBackground(Colour.GRAY_25);
				sheet.setColumnView(0, 11);
				sheet.setColumnView(1, 20);
				sheet.setColumnView(2, 40);
				sheet.setColumnView(3, 10);
				sheet.setColumnView(4, 10);
				sheet.setColumnView(5, 10);
				headwcf.setAlignment(Alignment.CENTRE);
				headwcf.setVerticalAlignment(VerticalAlignment.CENTRE);
				Label labe00=new Label(0,0,"用例编号",headwcf);
				Label labe10=new Label(1,0,"用例标题",headwcf);
				Label labe20=new Label(2,0,"测试数据",headwcf);
				Label labe30=new Label(3,0,"预期结果",headwcf);
				Label labe40=new Label(4,0,"实际结果",headwcf);
				Label labe50=new Label(5,0,"执行结果",headwcf);
				sheet.addCell(labe00);
				sheet.addCell(labe10);
				sheet.addCell(labe20);
				sheet.addCell(labe30);
				sheet.addCell(labe40);
				sheet.addCell(labe50);
				writeBook.write();
				writeBook.close();
			}
		
			} catch (Exception e) {
				e.printStackTrace();
			}
		
		return filePath;
	}
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		CWOutputFile cwOutputFile=new CWOutputFile();
		String cOutputFile = cwOutputFile.cOutputFile("aa");
		cwOutputFile.wOutPutFile(cOutputFile, "1", "1", "测试数据", "预期结果", "实际结果");
	}

}

(四)将工程文件打成jar包,然后把jar包放到jmeter安装目录 lib/ext目录下。

在这里插入图片描述
在这里插入图片描述

(四)jmeter读取用例结果到excel中

1、配置csv文件
在这里插入图片描述
2、添加正则提取器提取测试结果
在这里插入图片描述
4、添加BeanShell Sampler,调用方法创建文件。该脚本只运行一次,需要添加 仅一次循环控制器。

t=new CWOutputFile();//实例化对象
String filePath=t.cOutputFile("测试");//调用方法,获取到文件名保存到变量中
vars.put("filePath",filePath);//转为jmeter变量

在这里插入图片描述
5、添加BeanShell Sampler,调用方法写回结果

t=new CWOutputFile();
String testData="{\"name\":\"${name}\",\"email\":\"${email}\",\"pwd\":\"${pwd}\",\"pwdcf\":\"${pwdcf}\"}";
String preResult=vars.get("preResult");
String fResult=vars.get("fResult");
t.wOutPutFile("${filePath}", "${caseNo}", "${testPoint}", testData, preResult, fResult);

在这里插入图片描述

(五)运行,查看生成结果

因为邮箱已经注册了。所以提示错误。
在这里插入图片描述

查看excel输出,有乱码,后边又时间再解决
在这里插入图片描述

  • 4
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
JMeter中将返回结果写入文件的方法有多种。一种常用的方法是使用FileWriter和BufferedWriter类来实现。首先,你需要创建一个FileWriter对象,并指定文件路径,同时设置参数true表示将数据写入文件的末尾。然后,创建一个BufferedWriter对象,将FileWriter对象作为参数传入。接下来,使用BufferedWriter对象的write方法将要写入的结果写入文件,可以使用变量获取结果。最后,关闭BufferedWriter和FileWriter对象,确保文件写入成功。下面是一个示例代码的片段,用于将JMeter返回的结果写入文件: FileWriter fstream = new FileWriter("D:\\work\\test.txt", true); BufferedWriter out = new BufferedWriter(fstream); out.write(vars.get("results") + "\n"); if (out != null) { out.close(); } if (fstream != null) { fstream.close(); } 请注意,此示例中的文件路径是D:\\work\\test.txt,你可以根据实际情况修改文件路径。同时,确保在使用反斜杠时进行转义,或者使用正斜杠来表示文件路径。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [Jmeter提取接口返回数据并存储为文件](https://blog.csdn.net/qq_36717210/article/details/124613539)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [将jmeter响应结果中部分数据保存到本地文件](https://blog.csdn.net/qq_37405087/article/details/113650734)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值