【Jmeter】通过csv文件动态获取参数

本文详细介绍如何使用JMeter进行性能测试,包括设置线程组、使用CSV数据集配置、处理HTTP请求及响应断言,确保API调用稳定可靠。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  1. 首先添加一个线程组
    在这里插入图片描述

  2. 因为有一些公共的变量,所以可以先添加一个用户变量,用户变量可以放到线程组外,这样所有的线程组都可以用这一组环境变量
    在这里插入图片描述
    添加完成如下图
    在这里插入图片描述

  3. 在线程组上添加一个HTTP请求
    在这里插入图片描述

  4. 因为HTTP的参数是变化的,所以需要建立一个csv文件,存储这些可变的参数值,添加一个CSV Data Set Config
    在这里插入图片描述
    分隔符可以根据自己的参数来规定,我这里用的分隔符是 |, 因为我的csv文件的某个字段里面包含逗号,所以如果用逗号作为分隔符,会导致参数读取出错。参数的名称就是之后需要在HTTP请求中引用变量要用到的名称,每一个参数对应于csv文件中的一列,比如上面的变量path对应csv文件中的第一列,变量data对应csv文件中的第二列,以此类推
    在这里插入图片描述
    csv文件不能有表头,因为读取的时候会从第一行开始读。

这里提一个遇到的问题,就是在运行的过程中,发现会读到EOF,导致API调用出错,这个是不应该读到的
在这里插入图片描述
之后检查了一下csv文件,可以用Notepad++打开你的csv文件,然后显示所有字符
在这里插入图片描述
发现csv文件里面最后多了一个换行
在这里插入图片描述
所以删掉那个换行,再次运行就会发现不会再读到EOF了

  1. 填写HTTP的各项信息
    在这里插入图片描述
  2. 添加HTTP信息头管理器,因为有的API调用需要定义一些Header的信息,如果每个API的Header信息都不同,可以在每一个HTTP请求下面添加HTTP信息头管理器,如果一个线程组中的API的Header信息都是一样的,则可以把HTTP信息头管理器添加在线程组下面,这样整个线程组的API都会共用这一组Header
    在这里插入图片描述

在这里插入图片描述
7. 添加一个响应断言
在这里插入图片描述
我这里是判断了返回的status code,还有很多种断言的方法,大家可以使用,这里不做介绍
在这里插入图片描述

### JMeter 读取 CSV 文件 参数未成功加载 解决方案 #### 使用 `CSV Data Set Config` 组件配置 为了确保参数能够被正确加载,建议使用 `CSV Data Set Config` 组件来代替内置的 `__CSVRead()` 函数。该组件提供了更多的灵活性和功能选项[^2]。 - **文件路径设置** - 确认 CSV 文件路径无误,并且对于分布式测试环境而言,需将相同的 CSV 文件放置于每一台 slave 测试机器上的相同位置。 - **分隔符设定** - 默认情况下,字段间是以逗号作为分隔符;如果有其他字符充当分隔作用,则应在配置项中指定相应的分隔符。 - **变量名称定义** - 定义清晰易懂的变量名用于映射 CSV 中各列的数据,在后续脚本编写过程中调用这些变量即可获取对应值。 - **循环行为调整** - 可选地开启“Recycle on EOF?” 和 “Stop thread on EOF?” 来控制当到达文件末尾时的行为方式,前者会重新回到文件开头继续读取而后者则是终止线程运行。 ```properties # 示例属性配置 filename=example.csv # 路径指向要使用的CSV文件 variableNames=id,name,value # 列表中的各个项目分别赋给不同的变量 delimiter=, # 字段之间的分割符号,默认为英文半角逗号 recycle=true # 是否允许回绕至文件起始处再次遍历 stopThread=false # 达到EOF时不中断整个线程工作流 shareMode=all # 数据集共享模式可设为all、group或thread ``` #### 处理编码问题防止乱码现象发生 针对可能出现的乱码情况,应该仔细检查并统一所有涉及环节所采用的文字编码标准: - **保存源文件时指明编码格式** - 创建或编辑 CSV 文档之前,请先确认其默认编码形式(如 UTF-8),必要时通过文本编辑工具手动转换成目标编码再上至服务器端供 JMeter 访问。 - **启动命令行加入 JVM 参数** - 如果是在 Linux 或 MacOS 平台上执行 JMeter 的话,可以在启动命令后面追加 `-Dfile.encoding=UTF-8` 这样的 JVM 参数以强制规定内部处理过程遵循特定编码规则。 ```bash java -jar ApacheJMeter.jar -n -t testplan.jmx -l result.log -Dfile.encoding=UTF-8 ``` #### 动态切换不同 CSV 文件策略 有时需要根据不同条件动态选择不同的输入数据集合,这时可以通过组合使用自定义函数以及逻辑控制器实现灵活跳转效果[^5]。 ```groovy // Groovy Script Sampler example to dynamically set the file path based on some condition. def filePath = 'defaultPath'; // Default value if no conditions match. if (someCondition) { filePath = vars.get('customFilePath'); } vars.put('currentCsvFile', filePath); log.info("Current CSV File Path: " + filePath); // Then use this variable within your CSV Data Set Config element as follows: ${__P(currentCsvFile)} ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值