jmeter2-读取csv测试用例并执行,将结果输出成简单的测试报告

一:自定义csv测试用例

首先新建一个csv文件,在第一行输入以下参数(参数名称可自定义):
CaseNum:编号
apiType:协议类型
CaseName:用例名称
(前三个用来组合请求名称,可自行定义)
url:路径
methods:请求类型
parameter:请求参数
Expected results:预期结果
expectValue:断言

可参考下图
![在这里插入图片描述](https://img-blog.csdnimg.cn/6802f176c9374c839736acf3889f5fd3.pn

二:读取csv测试用例并执行

打开jmeter,新建一个线程组。
在这里插入图片描述
添加请求默认值:
在这里插入图片描述
根据自己的地址,输入对应的请求默认值。
在这里插入图片描述
在线程组下新建一个循环控制器,为了控制用例执行的个数。
在这里插入图片描述
在循环控制器下新建CSV Data Set Config,用来读取用例数据
在这里插入图片描述
在CSV Data Set Config中进行相关设置:

  1. 选择文件
  2. 文件编码根据平台看是否要设置,我这边就不设置了。
  3. 输入变量名称
  4. 忽略首行改为ture,因为我们的csv文件第一行是参数名
  5. 其他默认即可,可根据自身平台而设置
    在这里插入图片描述
    在循环控制器下新增,if控制器,用来控制post和get请求的区分。
    在这里插入图片描述
    在新增的两个if控制器中分别输入:
"${methods}"=="POST"
"${methods}"=="GET"

GET和POST同样的设置即可
在if控制器下新建http请求:
名称中输入,取csv用例中的参数,来组合请求名称

${CaseNum}-${apiType}-${CaseName}

如果是post请求,需手动将http请求改为POST;
路径中填写url,用来取csv用例中的参数。

${url}

post请求需要将参数写在消息体数据中
在这里插入图片描述
GET请求,参数放在路径中,中间加个“?”用来连接前面的路径。
在这里插入图片描述
在http请求下面添加响应断言:输入${expectValue},取csv用例中的参数。
在这里插入图片描述
添加察看结果树,查看响应结果。
在这里插入图片描述

三:将结果输出成简单的测试报告

首先得知道我们想要的实际结果是什么,这边我想要的实际结果是,响应结果中的“保存成功”四个字,那我们就要想办法去获取它。
在这里插入图片描述
在http请求下添加json提取器,用来提取数据。
在这里插入图片描述
在这里插入图片描述
在http请求下添加Bean Shell 后置处理器
在这里插入图片描述
在Bean Shell 后置处理器输入以下代码:

String path = "C:\\Users\\freyr\\Desktop\\zpeng\\测试部\\接口测试\\jmeter练习\\测试结果";
File file = new File(path) ;
if(!file.exists()) {
   file.mkdirs();
  }
 //创建文件夹 
FileWriter fstream = new FileWriter("C:\\Users\\freyr\\Desktop\\测试结果1.csv",true); //路径已存在,创建文件并追加写入数据
BufferedWriter out = new BufferedWriter(fstream);
 // 获取参数
out.write(vars.get("CaseNum") +"," + vars.get("CaseName") +"," +vars.get("parameter") +"," +vars.get("Expected results")+","+ vars.get("msg") +"\n");
out.close();
fstream.close();;

再次运行线程组,即可看到指定的路径下,生成了相关文件,格式如下(参数名称是我手动建的,因为导出的数据没有参数名称,代码里面数据时追加写入的,所以说手动建参数名称不影响的)

在这里插入图片描述

四:进阶优化

以上的操作适用于基本的增删改查,如果想实现导入和导出的接口,该怎么做。

导入

首先在csv测试用例中,在parameter(请求参数)中放入文件的路径,如果后续导入失败,可能是文件路径没有转义,将 \ 改为两个\ 即可。
另外新增一个参数:用来辨别是否是导入的请求。
我这边设置的是:iftype,如果是1则执行导入的请求,0则执行正常的请求。
在这里插入图片描述

回到jmeter,在第一个if控制器下,新建一个if控制器,用来嵌套。
在这里插入图片描述
然后将原始的http请求放到新增的if控制器下,并在if控制器中输入(csv文件中的参数不要忘记添加!!

"${iftype}"=="0"

在这里插入图片描述
将第一个if控制器及其下面的指令,全部复制,粘贴为一个新的if控制器结构,并将新的if控制器中的“0”改为“1”。
在这里插入图片描述
接下来对该控制器下的http请求进行设置:

  1. 将消息体数据中的参数删除。
    在这里插入图片描述
  2. 勾选对POST使用multipart/form-data,与浏览器兼容的头。
    在这里插入图片描述
  3. 在文件上传下,添加参数:
    在这里插入图片描述
  4. 在高级菜单下,客户端实现选择HttpClient14
    在这里插入图片描述
    运行请求,可以看到导入成功。
    在这里插入图片描述

导出

复制if控制器结构,生成一个if控制器,并将iftype的值改为2,当iftype为2的时候,执行导出的请求
在这里插入图片描述
由于导出没有请求参数,所以说放一个路径就行了。
在这里插入图片描述
修改BeanShell后置处理程序,将代码改为:

import java.io.*;

// 获取请求返回的数据,通过prev方法获取上个请求的返回
byte[] result = prev.getResponseData();

// 设置文件导出存放路径及保存的文件名
String file_name = "C:/Users/freyr/Desktop/数据分离导出.xls";

File file = new File(file_name);
FileOutputStream out = new FileOutputStream(file);
out.write(result);
out.close();;

该代码能将导出的文件存放到指定的文件夹下,并可自己命名。
执行请求:
在这里插入图片描述
找到存放的文件夹,可以看到该文件:
在这里插入图片描述

五:注意点

由于平台不一样,cookie的获取机制也不一样。我这边采取的是在请求下面添加信息头管理器,将cookie以及需要的参数都放进去。
正常平台的话:可在一开始添加一个仅一次控制器,进行登录。再添加cookie管理器,就可以自动抓取cookie。
05的小伙伴们注意:我们的平台,需要先登录,在访问首页,才能获取到cookie。
在这里插入图片描述

  • 8
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
JMeter是一款开源的性能测试工具,用于模拟并测试各种应用程序的性能。JMeter测试用例是一系列操作和配置项的集合,用于模拟用户行为和测试系统性能。以下是创建JMeter测试用例的一般步骤: 1. 创建测试计划:在JMeter中,首先需要创建一个测试计划。测试计划是测试用例的顶级元素,它定义了测试的属性和全局配置。 2. 添加线程组:线程组定义了并发用户的行为。在线程组中,您可以设置用户数、循环次数、延迟时间等。 3. 添加Sampler:Sampler定义了要执行的操作。它可以是HTTP请求、FTP请求、数据库操作等。您可以根据需要添加不同类型的Sampler来模拟用户行为。 4. 添加配置元件:配置元件定义了一些共享配置,例如服务器地址、端口号、身份验证信息等。您可以在需要时添加这些配置元件。 5. 添加断言:断言用于验证响应是否符合预期。您可以添加各种断言,例如响应代码断言、响应时间断言等。 6. 添加监听器:监听器用于收集并显示测试结果。您可以根据需要添加不同类型的监听器,例如查看结果树、聚合报告、图形结果等。 7. 配置线程组属性和Sampler属性:根据需要配置线程组和Sampler的属性,例如并发用户数、请求路径、请求参数等。 8. 运行测试用例:配置完毕后,您可以点击运行按钮来执行测试用例JMeter将模拟用户行为,并收集和显示测试结果。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值