全网最牛,Jmeter接口自动化-读取用例执行并结果回写(详细整理)

目录:导读

    • 前言
    • 一、Python编程入门到精通
    • 二、接口自动化项目实战
    • 三、Web自动化项目实战
    • 四、App自动化项目实战
    • 五、一线大厂简历
    • 六、测试开发DevOps体系
    • 七、常用自动化测试工具
    • 八、JMeter性能测试
    • 九、总结(尾部小惊喜)


前言

1、环境准备

下载jxl.jar这个jar包;
下载好之后,放到Jmeter的安装路径下的lib目录下;
jxl.jar的作用:完成对Excel的读写以及修改操作;

如何利用jmter操作excel的思路分析:
①Excell一般有三个最重要的元素:workbook,sheet,cell
②想要把结果储存到指定的单元格,那就必须依照这个三个元素来定位。
③先获取excel的文件名称
④获取表单名
⑤获取单元格的坐标
⑥获取结果,写入到对应的单元格去
⑦需要利用beanshell写java代码,获取对应的数据写入到Excel里面去。

2、测试数据结构准备

准备的数据如下:
测试用例文件命名为user.csv;
测试数据文件命名为num.csv;

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

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

全网最牛,Jmeter接口自动化-读取用例执行并结果回写(详细整理)_第1张图片

全网最牛,Jmeter接口自动化-读取用例执行并结果回写(详细整理)_第2张图片

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

全网最牛,Jmeter接口自动化-读取用例执行并结果回写(详细整理)_第3张图片

全网最牛,Jmeter接口自动化-读取用例执行并结果回写(详细整理)_第4张图片

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

全网最牛,Jmeter接口自动化-读取用例执行并结果回写(详细整理)_第5张图片

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

全网最牛,Jmeter接口自动化-读取用例执行并结果回写(详细整理)_第6张图片

⑤代码准备,编写好代码后,导出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变量,方便后期获取。

全网最牛,Jmeter接口自动化-读取用例执行并结果回写(详细整理)_第7张图片

⑦再创建一个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);

全网最牛,Jmeter接口自动化-读取用例执行并结果回写(详细整理)_第8张图片

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

全网最牛,Jmeter接口自动化-读取用例执行并结果回写(详细整理)_第9张图片

⑨测试结果文件如下

D7

下面是我整理的2023年最全的软件测试工程师学习知识架构体系图

一、Python编程入门到精通

全网最牛,Jmeter接口自动化-读取用例执行并结果回写(详细整理)_第10张图片

二、接口自动化项目实战

全网最牛,Jmeter接口自动化-读取用例执行并结果回写(详细整理)_第11张图片

三、Web自动化项目实战

全网最牛,Jmeter接口自动化-读取用例执行并结果回写(详细整理)_第12张图片

四、App自动化项目实战

全网最牛,Jmeter接口自动化-读取用例执行并结果回写(详细整理)_第13张图片

五、一线大厂简历

全网最牛,Jmeter接口自动化-读取用例执行并结果回写(详细整理)_第14张图片

六、测试开发DevOps体系

全网最牛,Jmeter接口自动化-读取用例执行并结果回写(详细整理)_第15张图片

七、常用自动化测试工具

全网最牛,Jmeter接口自动化-读取用例执行并结果回写(详细整理)_第16张图片

八、JMeter性能测试

全网最牛,Jmeter接口自动化-读取用例执行并结果回写(详细整理)_第17张图片

九、总结(尾部小惊喜)

奋斗是一种内心的燃烧,是坚持的力量与追求的信仰。放下犹豫,拥抱勇敢,跨越恐惧,展翅飞翔。无论前路多么崎岖,相信自己的能力,砥砺前行,终将创造自己璀璨辉煌的人生!

不管世事如何起伏,奋起直追的勇气永不减退。背负梦想,披荆斩棘,宛如骏马破风疾驰。即使路途艰险,也要坚定前行,相信自我能力,追逐光芒,开启辉煌的人生航程!

坚持不懈,在奋斗中成就辉煌,每一次尝试都是进步的机会。燃起内心的火焰,超越极限,拥抱挑战,勇往直前。相信自己的实力,敢于冒险,才能书写属于自己的壮丽人生之章!

你可能感兴趣的:(软件测试,jmeter,接口自动化测试,jmeter,接口测试,软件测试,jmeter接口测试,测试工具,接口自动化测试,接口自动化)