Jmeter-使用 CSV Data Set Config对接口进行参数化

本文介绍如何使用JMeter中的CSVDataSetConfig实现接口测试参数化,包括数据文件准备、配置元件添加、接口请求设置及监听器添加等步骤。

Jmeter 参数化-CSV Data Set Config

   在进行接口测试时,接口的入参可能存在多个值,那么需要依次校验这些枚举值是否能请求成功,就需要用到Jmeter的参数化功能。

   Jmeter的配置元件中提供了“CSV Data Set Config”可用于实现入参的参数化配置。

接口分析

如下图的接口文档清晰描述了,入参type的枚举值列表有10个。

准备数据文件

文件格式“.csv”

文件内容:第一行为参数名称,第二行开始是参数的枚举值

参数在接口内的引用方式:${type}

Jmeter-添加配置元件

菜单路径

菜单配置

  1. Filename:测试数据的文件地址
  2. File encoding:文件的编码方式
  3. Variable names:变量名称,也就是需要参数化的参数名称
  4. Ignore first line:忽略第一行,设置为true则表示第一行为参数名称,不读取;设置为false,则表示从第一行开始读取数据。

其他字段可保持默认,具体配置如下:

Jmeter-添加接口请求

从接口分析文档可知到以下信息:

在Thread Group上右键-sample-Http Request:

测试数据文件内已经定义了参数的名称是“type”,所以在接口内引用时使用${type};如果自己定义成其他名称,例如“Type0”,则引用时写“${ Type0}”。

Jmeter-添加监听器

在Thread Group上右键-Lisenter-View Results Tree

添加后可不做任何修改,保持默认配置即可

Jmeter-线程组配置

由于参数的枚举值有10个,需要循环运行10次,则需要在Thread Group上做特殊配置:

Loop Count:循环次数,配置成“10”

Jmeter-脚本运行结果

每次请求type值循环从测试数据文件内读取。

 

 

### 使用 CSV Data Set Config 处理数值中包含 JSON 数据 在 JMeter 中,使用 **CSV Data Set Config** 进行参数化时,如果数值中包含 JSON 数据,需要确保这些数据在 CSV 文件中被正确格式化,并且在测试计划中能够被正确解析。 #### 1. 在 CSV 文件中使用引号包裹 JSON 数据 CSV 文件默认使用逗号作为字段分隔符,而 JSON 数据通常包含逗号,这可能导致字段被错误解析。为避免此问题,应将包含 JSON 数据的字段用双引号包裹[^3]。例如: ```csv username,password,metadata user1,pass1,"{""name"":""John Doe"",""email"":""john@example.com"",""roles"":[""admin"",""user""]}" user2,pass2,"{""name"":""Jane Smith"",""email"":""jane@example.com"",""roles"":[""user""]}" ``` 在上述 CSV 数据中,`metadata` 字段包含完整的 JSON 对象,并使用双引号包裹以确保 JMeter 正确识别整个 JSON 内容为一个字段值。 #### 2. 配置 CSV Data Set Config 元件 在 JMeter 中配置 **CSV Data Set Config** 时,需确保以下设置: - **Filename**:指定 CSV 文件路径,如 `test_data.csv` - **Variable Names**:设置变量名,如 `username,password,metadata` - **Delimiter**:保留为默认的逗号 `,` - **Ignore Quotations**:设置为 `False`,以启用对双引号包裹字段的支持[^2] 这样,JMeter 会正确读取包含 JSON 数据的字段,并将其赋值给指定的变量(如 `metadata`),以便在后续的 HTTP 请求中使用。 #### 3. 在 HTTP 请求中使用 JSON 数 在 HTTP 请求中,可以将 JSON 数据作为请求体的一部分发送。例如,在 **HTTP Request** 的“Body Data”部分引用变量: ```json { "username": "${username}", "password": "${password}", "metadata": ${metadata} } ``` 注意:由于 `metadata` 变量本身已经是 JSON 格式,无需再次添加引号包裹,否则会导致 JSON 格式错误。 #### 4. 处理特殊字符转义 如果 JSON 数据中包含双引号,应在 CSV 文件中使用两个双引号进行转义(`""`),如: ```json "{""name"":""John Doe"",""email"":""john@example.com""}" ``` 这样,JMeter 会正确解析为: ```json {"name":"John Doe","email":"john@example.com"} ``` #### 5. 使用其他分隔符(可选) 如果 JSON 数据中频繁出现逗号且不便于使用引号处理,可考虑更改 CSV 文件的字段分隔符为其他字符(如 `;` 或 `\t`),并在 **CSV Data Set Config** 中设置对应的 **Delimiter** 值。例如: ```csv username;password;metadata user1;pass1;{"name":"John Doe","email":"john@example.com"} ``` 此时,JMeter 不会将 JSON 中的逗号误认为字段分隔符,从而避免解析问题[^1]。 --- ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Miss糖豆

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值