【Jmeter】解决从csv参数文件中获取带引号/逗号的数据问题【转】

原文:【jmeter随笔(3)-从csv中获取带引号的数据详情】  点击查看原文

作者:黑夜小怪

 

软件测试技术交流群 :

1、QQ交流群:群号 429183023

2、添加JeongJinWin,或者扫描头像二维码

 

最近在工作中,对jmeter实践的点滴的记录这里分享,不一定正确,仅供参考和讨论,有想法的欢迎留言、谈论。

1技巧1:从csv中获取带引号的数据详情

背景:我们从csv中获取数据,在jmeter中使用这些数据,其中csv的数据如图,有的数据包含引号和逗号

clipboard

 

问题:我们获取的数据,被自动加了引号

 

clipboard[4]

 

解决办法:

1、设置jmeter的【CSV Data Set Config】,将【Allow quoted Data?】设置程true即可

 

clipboard[6]
 

2、运行jmeter脚本,查看已经成功获取到想要的数据:

 

clipboard[8]

 

总结:遇到问题很正常,耐心排查解决即可,另外俗话说工欲善其事必先利其器,对工具的了解决定你的灵活,实际中我们不可能一下子掌握工具全部细节点,但我们需要长期不断有计划的去摸索和了解工具,这样遇到问题,我们才能很快解决,让我们的技术更好落地。

2、运行csv中全部数据详情

问题:需要循环获取csv中的数据,每一条数据,运行一次,直到全部运行完,但是我们发现之前用的是在【线程组】中设置循环变量的数据为 csv中的数据,这样每次修改csv用例后都需要来修改脚本,比较麻烦。

解决方法:

1、在CSV Data Set Config,设置【Recyle on EOF】为false

 

clipboard[10]

2、在【线程组】中设置【循环次数】为【永远】

clipboard[12]

 

3技巧3:断言不为null的设置详情

问题:我们请求返回json数据,其中我们只需要判断json中  “total”的值不为null,即json中不出现“total":null 即可

 

clipboard[14]
 

1、添加断言,设置如图,勾选【Substring】和【否】,并且勾选【JMeter Variable】,填写的【total111】是前面正则表达式的值

 

clipboard[16]

clipboard[18]

### 如何在 JMeter 中配置 CSV 文件实现参数化 #### 配置CSV数据文件设置组件界面说明 在JMeter中,通过`CSV Data Set Config`元件来读取CSV文件并进行参数化。该元件允许测试计划中的每个线程(用户)依次从指定的CSV文件获取一行作为输入变量[^1]。 - **Name**: 可以为此元件提供一个易于识别的名字。 - **Filename**: 输入要从中读入数据CSV文件路径;可以是绝对路径也可以相对路径。 - **File encoding (可选)**: 如果CSV不是UTF-8编码,则在此处指明其字符集。 - **Variable Names**: 定义由逗号分隔的一系列变量名列表,这些名字对应于CSV每列的数据项,在后续采样器里可以通过`${variable_name}`的形式访问它们。 - **Delimiter**: 设置字段之间的分隔符,默认情况下为逗号`,`。 - **Quote data values?**: 当CSV内的某些值被双引号包围时勾选此项。 - **Recycle on EOF?**: 到达文件结尾后是否重新回到开头继续循环读取记录。如果未勾选而选择了停止线程选项(`Stop Thread`),那么一旦所有可用数据都被消耗完毕,任何尝试再次调用这个元件都会触发线程终止事件[^2]。 - **Stop Thread on EOF?**: 若设为真(true),当遇到文件结束标记(EOF)时会立即中断当前执行流所属的那个虚拟用户的活动。 - **Sharing mode**: 控制多个线程间共享同一个CSV资源的方式,包括但不限于全局共享、按组划分或是完全独立运作等策略[^3]。 #### 示例:创建简单的HTTP请求参数化脚本 假设有一个API端点接受用户名和密码作为查询字符串的一部分,并希望通过不同的凭证组合来进行压力测试。此时就可以利用上述提到的功能特性构建如下所示的基础框架: ```yaml Thread Group ├── HTTP Request Defaults │ └── Server Name or IP = api.example.com └── CSV Data Set Config ├── Filename = /path/to/users.csv ├── Variable Names = username,password └── Delimiter = , └── HTTP Request └── Path = /login?username=${username}&password=${password} ``` 这里假定存在名为`users.csv`的文档位于给定位置上,内部结构类似于下面这样——首行为表头,紧接着的是若干实际待测账户的信息: ``` username,password userA,passA userB,passB ... ``` 每当模拟的新一轮交互发起之前,系统便会自动依据预定义好的规则抽取一对新的认证凭据用于组装最终发出的GET命令串[^4]。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值