当前位置:网站首页>JMeter-接口自动化测试读取用例,执行并结果回写
JMeter-接口自动化测试读取用例,执行并结果回写
2022-07-07 21:50:00 【测试架构师北凡】
前言:
【文章末尾给大家准备了大量的福利】
一:环境准备
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盘找到测试结果文件即可
测试结果文件如下
重点:学习资料学习当然离不开资料,这里当然也给你们准备了600G的学习资料
需要的先关注再私我关键字【000】免费获取哦 注意关键字是:000
疑惑:为什么要先关注呢? 回:因为没关注的话私信回了你看不到
项目实战
app项目,银行项目,医药项目,电商,金融
大型电商项目
全套软件测试自动化测试教学视频
300G教程资料下载【视频教程+PPT+项目源码】
全套软件测试自动化测试大厂面经
python自动化测试++全套模板+性能测试
听说关注我并三连的铁汁都已经升职加薪暴富了哦!!!!
边栏推荐
- PCL . VTK files and Mutual conversion of PCD
- Leetcode94. Middle order traversal of binary trees
- GEE(三):计算两个波段间的相关系数与相应的p值
- 行测-图形推理-1-汉字类
- Installing vmtools is gray
- ADC采样率(HZ)是什么怎么计算
- Introduction to anomaly detection
- This time, let's clear up: synchronous, asynchronous, blocking, non blocking
- 【刷题记录】3. 无重复字符的最长子串
- Use JfreeChart to generate curves, histograms, pie charts, and distribution charts and display them to jsp-2
猜你喜欢
Cases of agile innovation and transformation of consumer goods enterprises
Digital collections accelerated out of the circle, and marsnft helped diversify the culture and tourism economy!
行测-图形推理-5-一笔画类
I wish you all the best and the year of the tiger
Visual studio 2019 installation
PCL . VTK files and Mutual conversion of PCD
行測-圖形推理-4-字母類
Cascade-LSTM: A Tree-Structured Neural Classifier for Detecting Misinformation Cascades-KDD2020
微生物健康网,如何恢复微生物群落
What is fake sharing after filling the previous hole?
随机推荐
数据库每日一题---第22天:最后一次登录
Line test graph reasoning graph group class
GBU1510-ASEMI电源专用15A整流桥GBU1510
ArcGIS:字段赋值_属性表字段计算器(Field Calculator)依据条件为字段赋值
Line test - graphic reasoning - 1 - Chinese character class
Transform XL translation
LeetCode144. Preorder traversal of binary tree
行測-圖形推理-4-字母類
Classification and prediction of heartbeat signal
Database daily question --- day 22: last login
It's no exaggeration to say that this is the most user-friendly basic tutorial of pytest I've ever seen
Unity and webgl love each other
The wonderful relationship between message queue and express cabinet
Microbial Health Network, How to restore Microbial Communities
Explain in detail the communication mode between arm A7 and risc-v e907 on Quanzhi v853
Talk about DART's null safety feature
Transparent i/o model from beginning to end
One question per day - pat grade B 1002 questions
Clean C disk
Debezium series: introducing support for the final operator