1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > Jmeter 接口压力测试实战(一):Jmeter将测试结果写入到Excel中

Jmeter 接口压力测试实战(一):Jmeter将测试结果写入到Excel中

时间:2021-04-17 15:58:46

相关推荐

Jmeter 接口压力测试实战(一):Jmeter将测试结果写入到Excel中

1.Jmeter写入结果到Excel之环境准备

下载jxl.jar包

下载好之后,将这个包放到jmeter安装路径下的lib目录下

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

2.如何利用Jmter操作excel的思路分析

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

先获取excel的文件名称

获取表单名

获取单元格的坐标

获取结果,写入到对应的单元格去

需要使用beanshell写java代码,获取对应的数据写入到Excel里面去。

3.Jmeter写入结果到Excel之代码准备

新建一个Java Project-->CWResultFile,下载jxl.jar包,并导入jxl.jar包到lib下,如下所示:

CWResultFile java 类如下:

package com.hxs.file;

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:\\develop\\软件测试\\软件测试练习\\jmeter\\day03\\接口测试实战(一)\\" + 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;

}

}

将上面的代码导出成jar包:CWResultFile.jar,将导出的包放到Jmeter安装目录下的lib-->ext目录下。

4.Jmeter测试数据准备

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

测试用例

测试数据

测试用例.csv如下:

测试数据.csv如下:

线程组循环次数设置成:2

线程组-->CSV Data Set Config,保存测试用例,并设置相关属性

线程组-->CSV Data Set Config,保存测试数据,并设置相关属性 线程组-->HTTP请求默认值 线程组-->HTTP请求(登录) 线程组-->察看结果树,可以查看到登录接口的响应数据

一切准备就绪,下面就可以开始测试了!

5.Jmeter写入结果到Excel

线程组-->HTTP请求(登录)-->正则表达式提取器,提取登录接口的响应数据 线程组-->仅一次控制器线程组-->仅一次控制器-->BeanShell Sampler,创建一个Excel 线程组-->BeanShell Sampler,将测试数据写入Excel中 线程组-->察看结果树

6.遇到的问题

在将测试结果写入Excel的过程中,遇到了一个问题,如下图所示:

查了关于BeanShell脚本的资料,发现写的BeanShell脚本有问题,如下:

在Jmeter中我们经常会使用正则表达式去获取接口返回的参数,在引用参数的时候,可以直接使用“${参数名}”,如果这个参数的格式不带有任何符号需要转义的时候,那么这种引用方式就没有问题,否则Jmeter就没法识别。这时可以用vars.get("参数名")的方法将Jmeter变量先变成Java变量,然后再去操作,就不会报错!

可将上述BeanShell脚本修改成如下:

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。