当前位置: 首页 > 测试知识 > 软件测试工具JMeter的CSV数据集配置
软件测试工具JMeter的CSV数据集配置
2026-07-03 作者cwb 浏览次数192

 JMeter CSV 数据文件设置(CSV Data Set Config) 的内容。


1. 作用和添加位置

从外部 CSV 文件中逐行读取数据,并把每一列的值赋给变量(如 ${username}),供后续取样器使用。

在测试计划中:右键 线程组 → 添加 → 配置元件 → CSV 数据文件设置,一般放在 HTTP 请求等取样器的上层。


2. 配置参数

文件名

CSV 文件的途径。可以是绝对途径,也可以是相对途径(相对于 JMeter 的 bin 目录或 .jmx 文件所在目录)。如 data/users.csv。


文件编码

文件的字符编码。如果 CSV 中包含中文等非 ASCII 字符,建议设为 UTF-8。


变量名称

为 CSV 的每一列定义变量名,用英文逗号分隔。

如文件有两列,依次是用户名和密码,就填 username,password。

如果留空,JMeter 会以 CSV 文件的第一行作为变量名,并且会读取该行内容作为数据,除非同时设置了“忽略首行”。


忽略首行

如果 CSV 第一行是标题头(如 用户名,密码),需要设为 True 才会跳过,否则标题行会被当作一条数据使用。

注意:当你已经在“变量名称”中手动指定了变量名,且 CSV 第一行确实是标题时,必须设为 True,否则首行数据会被读出(导致变量值变成标题文字)。


分隔符

列之间的分隔字符。默认为逗号 ,。如果 CSV 用制表符分隔,可以填 \t。


是不是允许带引号?

设为 True 时,允许字段被双引号包裹。

当某个字段内包含了分隔符(如 "San Francisco, CA")或换行符时,需要用引号,此时应开启此项。


遇到文件结束符再次循环?

当所有行都被读完一遍后,是不是从头重新读取。

如果希望数据能反复使用(如线程数多于数据行数),可设为 True。

该选项和下一个“停止线程”一般互斥:一个为 True 时另一个应为 False。


遇到文件结束符停止线程?

读完文件所有行后,是不是直接结束当前线程。

常用于“每条数据只用一次,用完线程就结束”的场景,此时设为 True,同时不要勾选“再次循环”。


线程共享方式

控制多个虚拟用户怎样共同读取 CSV 数据。有三个选项:

所有线程:整个测试计划中所有虚拟用户共用一个文件读取指针,你读一行、我读下一行,一行数据不会被重复分配给不同用户(除非循环)。

当前线程组:同一个线程组内的所有用户共享一个指针,不同线程组之间各自独立。

当前线程:每个虚拟用户都有自己独立的文件指针,从第一行开始单独读取,互不干扰。

3. 配置举例

假设 CSV 文件 users.csv 内容如下(无标题行):

text

user1,pass1

user2,pass2

user3,pass3


配置方案:

文件名:users.csv(放在 JMeter 的 bin 目录)

变量名称:username,password

忽略首行:False

分隔符:,

线程共享方式:所有线程(3 个用户各取一行,不重复)


然后在 HTTP 请求的参数中,使用 ${username} 和 ${password} 即可。


4. 线程共享方式的行为差别

假设有 3 个虚拟用户,且 CSV 正好有 3 行数据:


所有线程

三个用户共用一个指针。第 1 个用户取第 1 行,第 2 个取第 2 行,第 3 个取第 3 行。数据刚好用完。如果用户数多于 3,则取决于“再次循环/停止线程”设置。


当前线程

每个用户都拥有自己的独立指针。每个用户都会从第 1 行读到第 3 行,各自独立执行三次循环(或根据循环控制器控制)。适合每个用户都要遍历所有数据的场景。


当前线程组

同线程组内的用户共享,组外独立。如果所有用户都在同一个线程组,行为和“所有线程”相同;如果分为多个线程组,则不同组各自拥有一个指针。


5. 常见技巧

途径推荐:尽量使用相对途径,把 CSV 文件放在 .jmx 同目录下,然后文件名直接写 data.csv。

作用域:CSV 数据文件设置放在线程组下或其父级即可生效,一般建议放在线程组内第一个位置。

配合循环控制器:如果希望一个线程遍历所有数据行,可在其下添加“循环控制器”(次数=CSV行数),并设置“再次循环=False”“停止线程=False”,共享方式为“当前线程”。

调试方法:在采样器中添加“察看结果树”和“调试取样器”,可以直观看到 ${username} 等变量是不是被正确赋值。

数据含分隔符:如果字段内包含逗号,请用英文双引号将整个字段包裹起来,如 "New York, NY",10001,并在设置中开启“是不是允许带引号? = True”。

变量名留空的特殊情况:如果没填“变量名称”且 CSV 首行是标题,需要同时勾选“忽略首行 = False”(否则标题会当作变量名被读走),并保证后续引用时使用和标题一致的变量名(如标题为 user,pass,引用时用 ${user})。一般手动指定变量名更可控。


6. 其他读取 CSV 的方式

__CSVRead 函数:${__CSVRead(data.csv,0)} 可动态读取指定列,较灵活但不易维护。

__StringFromFile 函数:每次调用读取文件的一整行。


文章标签: 软件测试 测试工具
咨询软件测试