目录

一、如何利用Jmter操作excel的思路分析

二、准备写入excel的java编码环境

1.下载jxl.jar包,并将其放在Jmeter的\lib\ext目录下

2.安装java的JDk 以及IntelliJ IDEA

三、.编写写入excel的jar包代码

1.新建一个Java Project-->CWResultFile

2.导入jxl.jar包

3. 将工程文件打成jar包:CWResultFile.jar,将导出的包放到Jmeter安装目录下的lib-->ext目录下

4.build项目

四、Jemter测试数据准备

1.添加老黄历线程组

2.添加HTTP请求默认值

3.添加测试用例CSV

4.添加测试数据

5.添加老黄历的HTTP请求

6.添加察看结果树

7.使用正则表达式提取器,全量提取老黄历的响应结果

8.创建测试结果文件excel

9.使用beanshell将测试结果写入excel测试结果文件中


一、如何利用Jmter操作excel的思路分析

Excel中一般有三个要素:workbook、sheet、cell,要想把结果存储到指定的单元格,那就必须依照这三个元素来定位。

先获取excel的文件名称
获取表单名
获取单元格的坐标
获取结果,写入到对应的单元格去
需要使用Jmeter取样器beanshell写java代码,获取对应的数据写入到Excel里面去。

二、准备写入excel的java编码环境

如下文件如有需要,请关注博客并私信

1.下载jxl.jar包,并将其放在Jmeter的\lib\ext目录下

2.安装java的JDk 以及IntelliJ IDEA

IDEA需要破解,否则只能免费试用1个月

三、.编写写入excel的jar包代码

1.新建一个Java Project-->CWResultFile

打开对话框 ,默认java,点击next

进入下一步,勾选,点击next

录入项目名、报名、以及项目路径

完成即可,录入以下代码,请关注博客,点赞,感谢

package com.company;
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;
import jxl.write.WriteException;public class CWOutputFile {/** wOutputFile方法写结果文件* wOutputFile(文件路径,用例编号,测试验证点,测试数据,预期结果,实际结果)*/public void wOutputFile(String filepath, String caseNo, String testPoint, String testData, String preResult, String fresult) throws WriteException, BiffException, IOException {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表中所包含的总列数// 获取Sheet表中所包含的总行数int rsRows = readsheet.getRows();// System.out.println(rsRows);/******************************** 字体样式设置 ****************************/// 字体样式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); // 第1列--用例编号;Label labetest2 = new Label(1, rsRows, testPoint); // 第2列--用例标题;Label labetest3 = new Label(2, rsRows, testData); // 第3列--测试数据;Label labetest4 = new Label(3, rsRows, preResult); // 第4列--预期结果;Label labetest5 = new Label(4, rsRows, fresult); // 第5列--实际结果;// 两个值同时相等才会显示通过if (preResult.equals(fresult)) {result = "通过";wcf.setBackground(Colour.BRIGHT_GREEN); // 通过案例标注绿色} else {result = "不通过";wcf.setBackground(Colour.RED); // 不通过案例标注红色}Label labetest6 = new Label(5, rsRows, result, wcf); // 第6列--执行结果;readsheet.addCell(labetest1);readsheet.addCell(labetest2);readsheet.addCell(labetest3);readsheet.addCell(labetest4);readsheet.addCell(labetest5);readsheet.addCell(labetest6);}wbook.write();wbook.close();}/** cOutputFile方法创建输出文件* cOutputFile方法返回文件路径,作为wOutputFile的入参*/public String cOutputFile(String tradeType) throws IOException,WriteException {String temp_str = "";Date date = new Date();SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");// 获取时间戳temp_str = sdf.format(date);// 以时间戳命名结果文件,确保唯一String filepath = "D:\\测试学习\\" + tradeType + "_output_" + "_" + temp_str+ ".xls";File output = new File(filepath); // 把filepath封装成一个File对象if (!output.isFile()) {// 如果指定文件不存在,则创建该文件output.createNewFile();WritableWorkbook writeBook = Workbook.createWorkbook(output); // 创建excel的文档对象// createSheet(Sheet名称,第几个Sheet)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(列号,宽度)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(列号,行号,内容)Label label00 = new Label(0, 0, "用例编号", headwcf);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;}

2.导入jxl.jar包

选择“file->project structure”,或者使用快捷键Ctrl+Alt+Shift+S。

窗口中可以看到“Modules”及其依赖项,点击+,选择Jars or Directories

进入jar文件选择页面,选择jar的本地路径,提交即可

文件结构中查看jar包引用

3. 将工程文件打成jar包:CWResultFile.jar,将导出的包放到Jmeter安装目录下的lib-->ext目录下

1)项目——右键——打开open module settings

2)依次打开下图4步

3)选择如下图所示

JAR files from libraies

①和设置库中的jar文件选择第一个打包时会把依赖库(lib)一块打包,

②选择第二个则会和lib下的库分开打包——若无法选择可忽略

4.build项目

build菜单下——build Artifacks——选择项目名——Build

构建成功如下图,会在out文件下生成jar

将生成的CWResultFile.jar放入jemter的lib下的ext文件夹下

四、Jemter测试数据准备

老黄历接口说明地址

老黄历-免费黄历API _API数据接口_API接口调用_API接口平台-聚合数据

需要准备对应的测试数据,一共有两份:

  • 测试用例
  • 测试数据

测试用例

测试数据

1.添加老黄历线程组

设置循环次数2

2.添加HTTP请求默认值

3.添加测试用例CSV

变量名需要和代码中的变量名保持一致

由于测试用例有首行标题,需要将忽略首行设置为True

测试用例预期结果中有引号,需要将是否允许带引号设置为True

4.添加测试数据

5.添加老黄历的HTTP请求

6.添加察看结果树

7.使用正则表达式提取器,全量提取老黄历的响应结果

使用debug sampler察看正则表达式是否提取成功

8.创建测试结果文件excel

首先添加仅一次控制器,只创建一次excel文件

在仅一次控制下,添加——BeanShell Sampler,创建一个Excel

beanshell的脚本如下图

执行创建excel的beanshell,报错:Unknown class: CWOutputFile

解决办法:引入的类名路径不正确,如下图股所示,需要和java路径保持一致

jmeter脚本如下:

import com.company.CWOutputFile;

t=new CWOutputFile();
String filepath=t.cOutputFile("huangli-测试结果");
vars.put("filepath",filepath);//转换为jmeter变量,方便以后获取

再次执行,查看结果:创建成功

9.使用beanshell将测试结果写入excel测试结果文件中

同样是引入的类名路径报错

修改写import路径,代码脚本和截图如下

执行,不报错,但是测试结果文件(文件路径在:java的filepath值中)的实际结果为空

推断获取实际结果失败可能原因:

  • 正则表达式提取器提取失败——步骤7中的值获取错误
  • Beanshell脚本的函数因函数名获取失败  :String fresult=vars.get("fresult");

使用debug sampler查看正则表达式是都获取实际结果成功

引用名称———脚本get的函数名

正则表达式{.*}

再次执行后,文件中的实际结果获取为null,对比debug以及beanshell的脚本,发现get的函数名是调试取样器中的fresult=null

String fresult=vars.get("fresult");——将改行代码再次修改,需要获取的是这个函数的值fresult_g0

修改为:String fresult=vars.get("fresult_g0");   再次提交,执行,查看测试结果文件

测试结果写入正确

												

Jmeter写入测试结果到excel文件中---jxl.jar相关推荐

  1. Python+pandas分离Excel数据到同一个Excel文件中多个Worksheets

    封面图片:<Python程序设计(第2版)>,董付国,清华大学出版社 =============== 问题描述: 已知文件"超市营业额2.xlsx"中结构与部分数据如图 ...

  2. Python+pandas把多个DataFrame对象写入Excel文件中同一个工作表

    推荐教材: <Python数据分析.挖掘与可视化>(慕课版)(ISBN:978-7-115-52361-7),董付国,人民邮电出版社,定价49.8元,2020年1月出版,2021年3月第6 ...

  3. 使用Python解决对比出两个Excel文件中的不同项并将结果重新写入一个新的Excel文件

    使用Python解决对比出两个Excel文件中的不同项并将结果重新写入一个新的Excel文件 因为有统计成员到会情况的任务,每次汇总时都很麻烦,需要一个个对应腾讯会议导出名单的成员,然后在总表上进行标 ...

  4. POI:从Excel文件中读取数据,向Excel文件中写入数据,将Excel表格中的数据插入数据库,将数据库中的数据添加到Excel表

    POI 简介: POI是Apache软件基金会用Java编写的免费开源的跨平台的 Java API,Apache POI提供API给Java程序对Microsoft Office格式档案读和写的功能. ...

  5. excel调用python编程-使用Python和xlwt向Excel文件中写入中文的实例

    sheet1.write(row_num,0,f) row_num = 1 book.save('demo.xls') 程序执行结果如下: grey@DESKTOP-3T80NPQ:/mnt/e/01 ...

  6. 利用python将txt文件中的内容写入Excel文件中

    Python是一个强大的语言,解决这点问题非常简单. 首先我们先下载两个包,xlrd,xlwt分别可实现对excel文件的读和写操作. 接下来详见代码: 1.从txt里写入excel文件 # codi ...

  7. python实现在excel文件中写入和追加内容

    excel是我们在日常工作中经常会用到的表格工具,我们在也已通过python来实现excel文件中写入和追加内容. 话不多说,上干货. import xlwt import xlrd from xlu ...

  8. Python pandas把多个DataFrame对象写入Excel文件中同一个工作表

    问题描述: 在使用pandas进行数据分析和处理时,需要把相同的DataFrame对象中的数据按顺序先后写入同一个Excel文件中的同一个工作表中,纵向追加. 方法一: 数据量小,把所有DataFra ...

  9. Java读取、写入、处理Excel文件中的数据

    在日常工作中,我们常常会进行文件读写操作,除去我们最常用的纯文本文件读写,更多时候我们需要对Excel中的数据进行读取操作,本文将介绍Excel读写的常用方法,希望对大家学习Java读写Excel会有 ...

最新文章

  1. android Json解析详解
  2. git add后取消_Python 命令行之旅:使用 click 实现 git 命令
  3. how does filter for list work in xml view
  4. 详解华为交换机iStack特性
  5. C++将一个数字转化为string的现成方法
  6. 阿里巴巴集团的几十款著名开源项目(Java)
  7. CodeForces 297A Parity Game (脑补题)
  8. Yammer Metrics实现服务指标收集与监控
  9. Java并发(二)——ThreadLocal
  10. android edittext获取 time值,在Android EditText中实现日期时间选择器(DatePicker和TimePicker)...
  11. dh算法 理论依据_dh算法(dh算法原理)
  12. logo设计软件哪个好用?小白也能学会的logo设计小技巧
  13. 专家,除了呼吁涨价你还会干点什么?
  14. 【考研数学】五. 二重积分
  15. 多旋翼飞行器设计与控制·基本组成(笔记002)
  16. MySQL Workbench建表时 PK NN UQ B UN ZF AI G的含义
  17. HTML+CSS整理大全
  18. 工厂管理系统该如何选?5款主流的工厂管理软件全测评!
  19. ADuC7026简单开发过程
  20. ES6新语法及vue基础

热门文章

  1. java+vue的二维码生成,二维码上传服务器,二维码的压缩包下载
  2. 基于《java2实用教程》的java知识点复习整理【第一章——java入门】
  3. Android:BroadCast Receiver
  4. JAVA水晶报表从环境搭建到创建动态水晶报表
  5. 秘密是如何被泄露的?自建文件分享神器HFS
  6. 数据有效性高级应用——制作二级下拉菜单
  7. zbb20190430 springboot 配置alimq
  8. [湖湘杯 2021 final]Penetratable
  9. ChatGPT 客户端来喽
  10. 【转】How To Ask Questions The Smart Way---提问的智慧