1. 前言
在使用JMeter的过程中, 常用的定义变量入口有User Defined Variables(UDV)
和CSV Data Set Config
UDV
比较好理解, 毕竟没有选项
但CSV Data Set Config
就麻烦一点, 配置就跟完型填空一样
2. 结论
- UDV变量所有线程共享, 同名变量取第一个, 且可读取
jmeter.propterties
参数 - CSV
-
Ignore first line
, 即是否忽略表头, 如果为true
, 过滤第一行 -
Allow quoted data
, 默认为False, 即"
做为字符串的一部分; 默认为True, 将"
内的字符串作为一个整体, 即使其中包含分隔符 -
Recycle on EOF
, 默认True, 当线程数大于数据行数, 线程会从头继续读取; 如果为False, 则变量填充EOF
-
Stop thread on EOF
只在Recycle on EOF
为False时有效, 如果为True, 则变量填充为EOF
时不执行线程 -
edit
参数用于自定义表达式, 返回true
orfalse
-
Sharing mode
, 默认为All threads
, 表示所有线程共同读取一个CSV文件;Current thread
表示线程独享CSV文件
-
3. 实验
为了搞清楚参数的含义, 新建Jmeter工程试验一下
- 添加线程组, 定义线程数为3
- 添加被测组件
UDV
- 添加被测组件
CSV Data Set Config
-
Debug Sampler
和View Results Tree
用于观察变量
3.1 UDV 配置
image.png3.2 CSV配置
数据文件内容:
1 "Java 12"
2 Python
image.png
3.3 场景
- 默认配置
Allow quoted data = False
Recycle on EOF = True
Stop thread on EOF = False
info.gif
- 修改Allow quoted data为True
Allow quoted data = True
Recycle on EOF = True
Stop thread on EOF = False
info.gif
- 修改Recycle on EOF为False
Allow quoted data = True
Recycle on EOF = False
Stop thread on EOF = False
info.gif
- 修改Stop thread on EOF为edit
填充表达式${__BeanShell(vars.get("u_var").equals("come from UDV"))}
image.png
剩下的场景请自行实验
- 线程数 > CSV行数,
Recycle on EOF
+Stop Thread on EOF
组合 - 线程数 <= CSV行数,
Recycle on EOF
+Stop Thread on EOF
组合 - Sharing mode参数
网友评论