惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

大猫的无限游戏
大猫的无限游戏
J
Java Code Geeks
小众软件
小众软件
D
Docker
腾讯CDC
H
Hackread – Cybersecurity News, Data Breaches, AI and More
V
V2EX
博客园 - 叶小钗
GbyAI
GbyAI
Microsoft Azure Blog
Microsoft Azure Blog
Stack Overflow Blog
Stack Overflow Blog
B
Blog RSS Feed
酷 壳 – CoolShell
酷 壳 – CoolShell
博客园 - 【当耐特】
IT之家
IT之家
博客园 - 司徒正美
M
MIT News - Artificial intelligence
T
The Blog of Author Tim Ferriss
The GitHub Blog
The GitHub Blog
罗磊的独立博客
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
L
LangChain Blog
阮一峰的网络日志
阮一峰的网络日志
C
Check Point Blog

晚花行乐

马克卡尼在2026年达沃斯论坛上的讲话(阅读材料) | 晚花行乐 鸡娃如何用力才是恰到好处 | 晚花行乐 读万卷书,行万里路的辩证关系 | 晚花行乐 反对培训机构掐尖招生 | 晚花行乐 小泽和建国会谈最后10分钟全文(阅读材料) | 晚花行乐 来看看 DeepSeek 怎么鸡娃 | 晚花行乐 谈谈基本功 | 晚花行乐 惠普 ProDesk SFF PC 各系列参数对比 | 晚花行乐 解决瘦客户机上安装 Debian 12 启动失败问题 | 晚花行乐 意拾喻言:老外写的文言文 | 晚花行乐 笠翁对韵中的典故(十三元) | 晚花行乐 谈谈中考取消四小门 | 晚花行乐 亚马逊云科技产品免费试用攻略(3) - 对象存储服务 | 晚花行乐 在 Windows 10 LTSC 版本上安装 WSL2 | 晚花行乐 Debian 12 的常用配置项 | 晚花行乐 在 Debian 12 上安装 Nvidia 显卡驱动程序 | 晚花行乐 解决 Debian 12 关机失败问题 | 晚花行乐 解决 VS Code 自动更新版本后卡在连接界面 | 晚花行乐 观看巴黎奥运会有感 | 晚花行乐 在 Windows10 上安装惠普旧打印机驱动程序 | 晚花行乐 欢迎关注公众号:晚花行乐 | 晚花行乐 如何编写拼写检查器 | 晚花行乐 亚马逊云科技产品免费试用攻略(2) - 云服务器 | 晚花行乐 Pandas 中 axis 参数的理解(附实例) | 晚花行乐 我打算命个名,叫什么什么 Manager | 晚花行乐 上海武康路历史建筑一览 | 晚花行乐 Python 实现简单的数学表达式解析并处理 | 晚花行乐 观看马拉松的感悟 | 晚花行乐 Python 保存 Cookies 到文件并再次读取 | 晚花行乐 如何为 Hugo 静态网站添加评论功能 | 晚花行乐
Jmeter 的变量类型和作用域 | 晚花行乐
2018-09-07 · via 晚花行乐

Jmeter 的有多种变量类型,有其各自的作用域。有时候不小心就会使它们之间相互冲突或者覆盖,本文梳理各种类型变量的生成方法、使用特点、作用范围。

变量类型

Jmeter 中的变量分别有以下几种:

  • User Defined Variables
  • User Parameters
  • 属性 Properties
  • 运行中创建的变量

我们分开单独研究各自的特点。

User Defined Variables(UDV)

User Defined Variables 是一种 Config Element,简称 UDV,用于在测试开始时,设定静态值,添加方法如下所示:

Add > Config Element > User Defined Variables

初始化

UDV 在测试计划开始时初始化, 官方文档 是这么解释的:

不能将每次调用都会改变返回值的函数作为 UDV 的取值来源,如果这么做了,仅第一次返回值会被保存在 UDV 中。

这说明 UDV 是在测试开始时初始化,所以 UDV 无法引用那些后续测试元件中才出现的变量。

静态值

UDV 的值在整个测试期间是不变的,用于保存在整个测试期间的静态值。使用 UDV 的好处是方便维护测试用例,避免在多个地方重复填写,而且方便后续修改。比如,被测系统的 IP、端口。

作用域

无论 UDV 在任何位置上,都会在测试开始时初始化,并且影响所有线程组。例如,如果在UDV中定义了一个变量 a=1,那么在所有线程组中都可以看到这个变量 a=1

Test Plan
  ├─Thread Group 1(${a}=1,来自 UDV)
  │ └─User Defined Variables (定义a=1)
  └─Thread Group 2 (${a}=1,来自 UDV)

不过,为了更好的可读性,应该把 UDV 放置于 Test Plan 的最顶部,当测试用例初始化后,UDV 的值将被复制到各个 Thread Group 中。例如这样:

Test Plan
  ├─ User Defined Variables (定义a=1)
  ├─ Thread Group 1 (${a}=1,来自 UDV)
  └─ Thread Group 2 (${a}=1,来自 UDV)

如果运行时创建的变量和某个 UDV 重名, UDV 的值会在当前的 Thread Group 内被覆盖。

Test Plan
  ├─ User Defined Variables (a=1)
  ├─ Thread Group 1
  │ └─ Post Processor
  │ └─(${a}=2,覆盖 UDV)
  └─ Thread Group 2 (${a}=1,来自 UDV)

动态的设置变量值,可以使用 User Parameters .

User Parameters

首先,User Parameters 是 Pre Processors 的一种,添加方法如下所示:

Add > Pre Processors > User Parameters

用来建立线程间独立的、属于各用户的变量,和 上面的 UDV 最大的不同就是,User Parameters 可以指定各个用户(线程)的变量值。比如设置了如下用户变量值:

Name:User_1User_2User_3
a123

那么这时创建多个用户(线程),他们会依次读取列表中的数值。如果用户数量比列表中的数值个数多,则会循环往复。如果创建5个用户,那么每个用户拿到的变量值可能是这样:

运行时动态创建的线程:

  • Thread 1: —— a=1 ——
  • Thread 2: —— a=2 ——
  • Thread 3: —— a=3 ——
  • Thread 4: —— a=1 ——
  • Thread 5: —— a=2 ——

属性 Properties

Properties,属性是 Jmeter 最顶层的命名空间,在整个 Test Plan 里都可读写,可以随时随地的使用,用于在 线程组间共享值

├─ User Defined Variables (读取同一个属性a)
├─ Thread Group 1 (${a}=1,读取同一个属性a)
└─ Thread Group 2 (${a}=1,读取同一个属性a)

声明属性

声明属性的方法有以下几种:

  • 在 bin 文件夹下的 jmeter.properties 文件
  • ${__setProperty} 函数
  • Jmeter 的启动参数中携带 -J属性名
  • Groovy 语言中的 props.put 方法

读取属性

读取属性有以下几种途径:

  • ${__property} 函数
  • ${__P} 函数
  • Groovy 语言中的 props.get 方法

运行中创建的变量

当你使用正则表达式处理器(Regular Expression Extractor)提取出特定的字符串时,就可以自动创建变量,保存提取出的字符串。

这个变量只能在当前的线程组中访问,跨线程组,需要用到 Jmeter 属性 . 访问的方法有:

各位读后有什么想法,请在下方留言吧!如果对本文有疑问或者寻求合作,欢迎 联系邮箱邮箱已到剪贴板

精彩评论