news 2026/3/8 0:25:13

Jmeter接口自动化测试读取用例

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Jmeter接口自动化测试读取用例

🍅点击文末小卡片,免费获取软件测试全套资料,资料在手,涨薪更快

一:环境准备

1.下载jxl.jar这个jar包

2.下载好之后,放到Jmeter的安装路径下的lib目录下

3.jxl.jar的作用:完成对Excel的读写以及修改操作

如何利用jmter操作excel的思路分析:

1,Excell一般有三个最重要的元素:workbook,sheet,cell
2,想要把结果储存到指定的单元格,那就必须依照这个三个元素来定位。
3,先获取excel的文件名称
4,获取表单名
5,获取单元格的坐标
6,获取结果,写入到对应的单元格去
7,需要利用beanshell写java代码,获取对应的数据写入到Excel里面去。

二:测试数据结构准备

准备的数据如下:

(1)测试用例文件命名为user.csv

(2)测试数据文件命名为num.csv

注意:先新建txt文件,然后将文件扩展名改为csv,不要新建xls再改为csv,不然会出现读取不到文件的情况

1.创建测试用例文件,并导入到CSV Data Set Config,命名为test_case,并设置相关属性(注意圈起来的部分)

2.创建测试数据文件,并导入到CSV Data Set Config,命名为test_data,并写入变量名为tel,pwd

(1)新建线程组,创建一个登录请求的http,并传入相关的参数

(2)新建一个正则表达式提取器,获取http请求返回的结果

四:代码准备,编写好代码后,导出jar包,命名为CWResultFile.jar,将导出的jar包放入放到Jmeter的安装路目录下的lib--ext目录下,然后记得重启Jmeter,不然不生效

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; import jxl.write.biff.RowsExceededException; /**导入jxl.jar;*后续扩充功能,sheet2增加测试报告展现;------待实现;*/ public class CWOutputFile { public static void main(String[] args) throws RowsExceededException, WriteException, BiffException, IOException{ CWOutputFile t=new CWOutputFile(); String File=t.cOutputFile("测试"); } /** wOutputFile方法写结果文件* wOutputFile(文件路径,案例编号,测试验证点,预期结果,实际结果,错误码,状态码,响应结果)*/ public void wOutputFile(String filepath, String caseNo,String testPoint, String preResult, String fresult, String errCode,String status, String respond) throws IOException,RowsExceededException, WriteException, BiffException { 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 labetest1 = new Label(0, rsRows, caseNo);// 第1列--案例编号; Label labetest2 = new Label(1, rsRows, testPoint); // 第2列--验证测试点; Label labetest3 = new Label(2, rsRows, preResult); // 第3列--预期结果; Label labetest4 = new Label(3, rsRows, fresult);// 第4列--实际结果; Label labetest5 = new Label(4, rsRows, errCode);// 第5列--错误码; if (preResult == fresult) { result = "通过";wcf.setBackground(Colour.BRIGHT_GREEN); // 通过案例标注绿色 } else {result = "不通过";wcf.setBackground(Colour.RED);// 不通过案例标注红色 } Label labetest6 = new Label(5, rsRows, result, wcf); // 第6列--执行结果; Label labetest7 = new Label(6, rsRows, status); // 第7列--状态码 Label labetest8 = new Label(7, rsRows, respond);// 第8列--响应结果 readsheet.addCell(labetest1); readsheet.addCell(labetest2); readsheet.addCell(labetest3); readsheet.addCell(labetest4); readsheet.addCell(labetest5); readsheet.addCell(labetest6); readsheet.addCell(labetest7); readsheet.addCell(labetest8); } wbook.write(); wbook.close(); } /** cOutputFile方法创建输出文件,传入参数为交易类型,如开户等;* cOutputFile方法返回文件路径,作为wOutputFile的入参;*/ public String cOutputFile(String tradeType) throws IOException, WriteException { String temp_str = ""; Date dt = new Date(); SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss"); temp_str = sdf.format(dt); // 获取时间戳// 相对路径默认为 apache-jmeter-3.1\bin String 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); // createSheet(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); // 设置列宽度setColumnView(列号,宽度) Sheet.setColumnView(1, 30); Sheet.setColumnView(2, 35); Sheet.setColumnView(3, 35); Sheet.setColumnView(4, 18); Sheet.setColumnView(5, 11); Sheet.setColumnView(6, 11); Sheet.setColumnView(7, 50); headwcf.setAlignment(Alignment.CENTRE); // 设置文字居中对齐方式; headwcf.setVerticalAlignment(VerticalAlignment.CENTRE); // 设置垂直居中; Label labe00 = new Label(0, 0, "案例编号", headwcf); // Label(列号,行号, 内容) 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); Label labe60 = new Label(6, 0, "返回状态", headwcf); Label labe70 = new Label(7, 0, "响应结果", headwcf); Sheet.addCell(labe00); Sheet.addCell(labe10); Sheet.addCell(labe20); Sheet.addCell(labe30); Sheet.addCell(labe40); Sheet.addCell(labe50); Sheet.addCell(labe60); Sheet.addCell(labe70); writeBook.write(); writeBook.close(); } return filepath; } }

五:添加一个beanshell取样器调用代码,并且用到仅一次控制器(因为只需要导出一个Excel文件)

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


六:再创建一个beanshell取样器调用代码,写入数据到Excel文件中

s=new CWOutputFile(); String testData="{"+"\"mobilephone\":\""+"${tel}\","+"\"pwd\":\""+"${pwd}\""+"}"; String preResult=vars.get("preResult");//用get方法可以确保获取到的是字符串,里面传递的是变量名,不需要用${变量名}这种方式咯! String fresult=vars.get("fresult"); s.wOutputFile("${filepath}", "${caseNo}","${testPoint}",testData,preResult,fresult);


七:点击运行,在D盘找到测试结果文件即可

测试结果文件如下

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!凡事要趁早,特别是技术行业,一定要提升技术功底。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/2/24 12:48:39

基于nodejs和vue框架的企业人事绩效考核综合管理系统thinkphp

目录基于Node.js和Vue框架的企业人事绩效考核综合管理系统(结合ThinkPHP)的摘要项目技术支持可定制开发之功能亮点源码获取详细视频演示 :文章底部获取博主联系方式!同行可合作基于Node.js和Vue框架的企业人事绩效考核综合管理系统…

作者头像 李华
网站建设 2026/3/6 11:37:13

Spring Boot核心插件全解析(官方+第三方,附使用场景)

在Spring Boot开发中,“插件”是提升开发效率、简化配置流程的核心利器。Spring Boot的插件体系围绕“约定优于配置”理念构建,主要分为官方原生核心插件、构建插件、运维辅助插件以及主流第三方插件四大类。本文将对这些插件进行系统性梳理,…

作者头像 李华
网站建设 2026/3/1 17:37:05

融媒体中心三审三校的必要性,为什么?

“三审三校”制度不仅是传统出版业的优良传统,更是融媒体中心生存与发展的“生命线”和“安全阀”。在“一次采集、多种生成、多元传播”的融媒体环境下,实行严格的“三审三校”具有以下四大核心必要性:一、 守住政治安全的“底线”&#xff…

作者头像 李华
网站建设 2026/3/5 7:25:17

【VTK手册041】切片抽取工具:vtkCutter原理解析

【VTK手册041】切片抽取工具:vtkCutter原理解析 在医学图像处理与三维可视化领域,切片抽取(Slicing)是分析解剖结构最常用的手段之一。VTK 提供的 vtkCutter 是实现这一核心功能的基石类。本文将深入解析 vtkCutter 的基本原理、核…

作者头像 李华
网站建设 2026/3/7 2:48:40

飞书多维表格工作流指南(AI日报小助手)

之前发过几篇能写入飞书的扣子Coze工作流,有不少同学会卡在输出到飞书这一步,出现问题时不知道该如何解决。今天我们直接跳过扣子,用飞书多维表格搭建一个工作流——AI日报小助手,非常简单的入门案例。用飞书搭建工作流&#xff0…

作者头像 李华
网站建设 2026/2/26 16:04:53

深圳金鑫磁材|深圳纳米晶磁芯:氢能退火、再生金属,碳中和实践

在新能源汽车、5G通信、光伏逆变器等新兴产业高速发展的浪潮中,电磁元件的效率、体积与可靠性成为制约技术突破的关键瓶颈。作为全球纳米晶磁芯研发与制造的核心区域,深圳凭借其技术积累与产业集群优势,正推动这一“软磁全能选手”从实验室走…

作者头像 李华