一、场景

需要模拟用户手工填单操作批量新增单据,使用JMeter按csv文件中的内容批量新增。

二、实现

1、样例

此处以添加简单的TODO事项为例:

例如:需要添加的TODO事项csv文件如下:

data.csv:

Description,Date
Complete report,21/12/2024
Arrange meeting,22/12/2024
Go running,23/12/2024
Prepare dinner,24/12/2024
Send email,25/12/2024
Read book,26/12/2024
Buy groceries,27/12/2024
Call client,28/12/2024
Write summary,29/12/2024
Review plan,30/12/2024

2、JMeter循环读取数据

  • CSV Data Set Config

JMeter的CSV Data Set Config用于从外部文件(如 CSV文件)中读取数据,实现请求参数的动态化。

配置项 说明
Filename CSV 文件路径
File Encoding 文件编码
Variable Names 变量名列表(用英文逗号分隔),对应CSV文件中的各列,后续通过${变量名}格式引用
Ignore first line 是否忽略首行,如果首行为标题,一般需要忽略
Delimiter 每行数据的分隔符,默认为英文逗号
Allow quoted data 数据是否在引号内,例如:”张三,18”,此属性为True时,张三,18是一个数据,为False时,是"张三18"两个数据​
Recycle on EOF 读到文件结尾时是否循环读取,True为从头重新开始,False为结束
Stop thread on EOF ​读取到文件结尾时是否停止线程,此设置仅在Recycle on EOF为False​时生效
Sharing mode 线程共享模式,控制多个线程如何共享数据
  • Debug Sampler

JMeter的调试取样器Debug Sampler是一个内置的调试工具,主要用来在脚本运行时,实时查看JMeter变量、属性等的值。

配置项 说明
JMeter properties 是否在结果中显示所有的JMeter属性(通常是JMeter自身的全局配置)
JMeter variables 是否显示当前线程/用户可见的所有JMeter变量
System properties 是否显示Java虚拟机和操作系统的环境属性
  • 测试

将循环控制器设置为循环10次,增加察看结果树:

运行结果:

通过Debug Sampler可以看到正确的读取了csv文件中的数据。

3、批量新增

  • 分析请求数据

使用网络工具分析新增待办时的请求方式及数据:

请求地址:http://localhost:8080/add-todo

请求方式:POST

表单数据:

id: 0
description: todo-001
targetDate: 21/12/2024

在JMeter中增加HTTP请求:

  • HTTP信息头管理器

由于需要登录才能操作,此处为了快速使用,直接复制一个已登录的请求头:

需要注意,从F12网络中复制的数据中Key、Value之间的:后不能有空格,例如:

Connection: keep-alive
...

需要替换为:

Connection:keep-alive
...

再粘贴到JMeter中。

  • 运行

运行JMeter,可以在察看结果树中看到请求全部成功:

刷新TODO列表,可以看到批量新增成功: