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。
在这里插入图片描述

<think>好的,我现在需要回答用户的问题:“如何在 JMeter 中批量导入来自禅道的测试用例教程”。首先,我需要了解用户的需求。用户可能在使用禅道作为测试管理工具,现在想要将测试用例批量导入到JMeter中,以便进行性能测试或者自动化测试。 接下来,我需要回忆JMeter和禅道的相关功能。禅道是一个测试管理工具,支持测试用例的管理,而JMeter主要用于性能测试,但也可以通过插件或脚本进行功能测试。用户提到的批量导入,可能需要通过某种接口或文件导出导入的方式实现。 根据提供的引用内容,引用[4]提到禅道测试用例自动化录入,使用HTTP(S) Test Script Recorder录制脚本。这可能涉及到导出禅道用例为某种格式(如CSV、XML),然后通过JMeterCSV Data Set Config或者使用BeanShell脚本解析文件HTTP请求。 接下来,我需要验证是否存在直接的方法或插件支持禅道到JMeter的批量导入。如果没有现的工具,可能需要手动导出用例,转换为JMeter读取的格式,再配置JMeter测试计划。例如,禅道可能支持导出用例为CSV,然后使用JMeterCSV数据驱动测试。 另外,用户可能需要步骤指导,包括如何从禅道导出用例,如何转换格式,如何在JMeter中配置元件来读取这些用例,对应的HTTP请求。可能需要引用禅道的导出功能和JMeter的数据驱动测试方法。 需要注意,引用[4]提到使用HTTP Test Script Recorder,这可能是指录制手动操作的步骤,但用户需要的是批量导入,所以可能需要结合导出文件和JMeter的数据驱动方法。例如,先导出禅道用例到CSV,然后在JMeter中使用CSV Data Set Config读取构建HTTP请求。 最后,整理步骤,确保逻辑清晰,用户能够逐步操作。可能需要分步骤说明导出、转换、配置JMeter元件等过程,提醒可能的注意事项,如格式匹配、参数化处理等。</think>### 如何在 JMeter 中批量导入禅道测试用例 以下是结合禅道测试用例导出功能和JMeter数据驱动测试的实现步骤: #### 1. **从禅道导出测试用例** - 登录禅道,进入`测试视图` -> `用例` -> 选择需要导出的用例模块。 - 点击`导出`按钮,选择导出格式为`CSV`(或Excel,需后续转换为CSV)[^2]。 - 导出的文件通常包含用例标题、步骤、预期结果等字段。 #### 2. **整理CSV文件格式** - 确保CSV文件的列名与JMeter参数名匹配,例如: ```csv case_title,steps,expected_result 登录测试,输入用户名和密码,跳转至首页 ... ``` - 删除无关列,保留测试步骤中需要参数化的内容。 #### 3. **在JMeter中配置CSV数据驱动** - 添加`CSV Data Set Config`元件: - **Filename**: 指定导出CSV文件路径。 - **Variable Names**: 定义变量名(如`steps,expected_result`)。 - 其他参数保持默认(如忽略首行、分隔符为逗号)。 - 添加`线程组` -> `HTTP请求`,将用例步骤参数化: ```java // HTTP请求示例(以接口测试为例) ${steps} // 引用CSV中的步骤参数 ``` #### 4. **处理动态关联参数(可选)** - 若用例涉及动态参数(如token),使用`正则表达式提取器`或`JSON提取器`从响应中提取传递给后续请求。 #### 5. **批量执行与断言** - 在HTTP请求中添加`响应断言`,通过`${expected_result}`验证实际结果是否符合预期。 - 使用`查看结果树`和`聚合报告`监听器分析批量执行结果--- #### **注意事项** - **权限问题**:确保禅道导出CSV文件路径在JMeter中可访问[^4]。 - **编码格式**:CSV文件需保存为UTF-8,避免中文乱码。 - **复杂用例处理**:若用例步骤包含多步骤逻辑,可拆分为多个JMeter请求通过`事务控制器`管理。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值