第四篇:《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 和断言,实现批量接口校验

相关推荐
qq_452396236 小时前
第五篇:《JMeter关联:提取动态数据并传递给后续请求》
jmeter
弹简特1 天前
【Fiddler抓包工具】一文通关Fiddler抓包工具【附:Fiddler结合jmeter接口测试实战】
jmeter·fiddler·接口测试·抓包
测试19982 天前
性能测试方案设计的方法和思路
自动化测试·软件测试·测试工具·jmeter·测试用例·压力测试·性能测试
川石课堂软件测试2 天前
软件测试|常见面试题整理
数据库·python·jmeter·mysql·appium·postman·prometheus
这是个菜比测试2 天前
jmeter无法访问内网接口
jmeter
qq_452396232 天前
第三篇:《JMeter断言:验证接口响应正确性》
android·jmeter
是小章啊3 天前
Jmeter压测实战之HTTP_POST
网络协议·jmeter·http
古城小栈5 天前
封神!Rust 出品 HTTP 压测神器 cargo-whero,轻量碾压 JMeter、wrk,新手也能秒上手
jmeter·http·rust
_周游5 天前
【软件测试】使用JMeter进行压力测试_3
jmeter·压力测试