第四篇:《JMeter参数化:CSV数据文件与用户变量》

在接口测试中,经常需要测试多组不同的输入数据。例如登录接口,需要验证不同账号密码组合。手动修改测试数据再运行多次效率太低。JMeter 提供了多种参数化方式:CSV 数据文件、用户变量、随机函数等。本文将详细讲解如何实现数据驱动测试。

一、参数化的本质

参数化就是把测试脚本中的某些固定值替换为变量,在运行时从外部数据源读取不同值。

好处:

减少脚本重复(一个 HTTP 请求循环运行多组数据)

测试数据易于维护(Excel/CSV 文件修改即可)

便于实现数据驱动测试框架

二、用户定义的变量(User Defined Variables)

2.1 使用场景

用于定义固定不变的常量,如测试环境 URL、公共 header 值等。元件的变量在测试计划启动时初始化,不可动态修改。

2.2 添加方式

右键测试计划(或线程组) → Add → Config Element → User Defined Variables

添加变量,例如:

Name: base_url,Value: jsonplaceholder.typicode.com

Name: timeout,Value: 5000

在脚本中使用:baseurl、{base_url}、baseurl、{timeout}。

三、函数助手生成随机变量

对于一些需要唯一值或随机值的场景,可以使用 JMeter 的函数。

3.1 打开函数助手

Tools → Function Helper Dialog

3.2 常用函数

3.3 使用示例

在 HTTP 请求的 Body 中使用:

json

{

"username": "user_KaTeX parse error: Expected group after '_' at position 2: {_̲_RandomString(5...{__time(,)}@example.com"

}

四、CSV 数据文件设置(最常用)

CSV 数据文件可以从外部文件中逐行读取数据,每行对应一组参数,适合大批量测试数据。

4.1 准备 CSV 文件

创建一个 login_data.csv 文件,内容示例:

csv

username,password,expected_code

admin,123456,0

admin,wrong,401

user1,pass1,0

第一行是变量名(可选),后面每行是一组数据。

4.2 添加 CSV Data Set Config

右键线程组 → Add → Config Element → CSV Data Set Config

配置项:

4.3 在脚本中使用 CSV 变量

在 HTTP 请求中,直接使用 username、{username}、username、{password}。

例如登录接口的 Body Data:

json

{

"username": "username","password":"{username}", "password": "username","password":"{password}"

}

4.4 线程组循环次数

为了让线程组读取 CSV 中的多行数据,需要设置循环次数 ≥ CSV 行数。

线程组中设置 Loop Count = 3(或者使用 Forever,配合 CSV 的 Recycle on EOF 控制)。

推荐做法:线程数设为 1,循环次数设为 CSV 行数。这样每行数据顺序执行一次。

五、实战:登录接口数据驱动测试

5.1 测试场景

接口:POST /api/login

数据文件:login_data.csv 包含 username, password, expected_code

使用 CSV 数据文件,循环执行每行数据,并通过 JSON 断言校验 $.code 是否等于期望值。

5.2 测试计划结构

text

Test Plan

├─ HTTP Request Defaults (服务器、协议)

├─ HTTP Header Manager (Content-Type: application/json)

├─ CSV Data Set Config (读取 login_data.csv)

├─ Thread Group (线程数1,循环次数=数据行数)

├─ HTTP Request (POST /login, body中使用${username}等)

├─ JSON Assertion (验证 .code 等于 {expected_code})

└─ View Results Tree

5.3 注意事项

CSV 文件路径推荐放到 JMeter 的 bin 目录下,或使用相对路径。若使用绝对路径,注意跨平台兼容性。

如果 CSV 文件第一行是变量名,Variable Names 中可以不写(留空),但一般保留并跳过第一行?JMeter 默认不会自动跳过第一行,需要手动设置:在 CSV Data Set Config 中有一个 Ignore first line 选项(仅在 Variable Names 非空时生效)。勾选后,第一行作为变量名,数据从第二行开始读取。

对于大批量数据(几千行),注意内存占用。

六、参数化方式对比与选择

七、常见错误与解决

八、总结

本文核心:

用户定义变量用于固定常量

函数助手生成动态随机数据

CSV 数据文件是数据驱动测试的核心,需配合线程组循环

实战中组合使用 CSV 和断言,实现批量接口校验

相关推荐
川石课堂软件测试2 小时前
零基础小白如何学习自动化测试
python·功能测试·学习·测试工具·jmeter·压力测试·harmonyos
_周游3 小时前
【软件测试】Jmeter插件管理工具
jmeter·压力测试
一氧化二氢.h4 小时前
图中元件的执行顺序
测试工具·jmeter
哆啦A梦的口袋呀1 天前
JMeter基础用法
jmeter
查拉图斯特拉面条2 天前
【JMeter 高阶】正则提取器万能匹配 gsdm、czygsdm、ddgsdm 同后缀字段
jmeter
原来是猿2 天前
安装JMeter
jmeter
查拉图斯特拉面条2 天前
JMeter 兼容整数 / 小数金额断言方案:JSONPath 转为 JSR223 Groovy 断言实战
jmeter
1candobetter3 天前
JMeter 常见功能在调试阶段与正式压测阶段的使用建议
jmeter·压力测试
Demon1_Coder3 天前
微服务-jmeter
jmeter
BullSmall4 天前
JMeter AI 插件
人工智能·jmeter