JMeter体系原理(四): 变量、属性和对象 (qq.com)
在JMeter的元件之间可用通过变量、属性和对象传递数据。
此外,在JMeter编写代码的时,也可以通过变量、属性和对象来影响元件。
1. 变量
JMeter 变量是每个线程的本地变量,不同线程之间彼此隔离,
所以 A 线程修改变量后,B 线程中并不会跟着变化。
1. 设定变量
-
使用配置元件【User Defined Varables】
- 启动前创建,分配到每一个线程的
-
前 / 后处理器
- 执行取样器时创建,只作用于当前线程
-
脚本
vars.put("variableName", "variableValue");
2. 使用变量
-
在元件中,通过的标记使用变量,其中
var_name
是变量的名称,不存在的变量原样返回${var_name}
-
在脚本中,通过代码使用变量,不存在的变量返回 null
def name = vars.get("variableName");
log.info(name)
-
如果引用了未定义的函数或变量,JMeter 不会报告 / 记录错误 - 引用原样返回
3. 删除变量
-
在元件中
- 略
-
在脚本中
vars.remove("variableName");
2. 属性
JMeter 属性是全局唯一的,所以可用于跨线程传递数据
如果需要跨线程传递数据,可以使用属性,属性在 JMeter 中全局唯一
1. 设定属性
-
在配置文件中
propertyName=66666666666666
-
在启动参数中
-JpropertyName=7777777777777
-
元件中
- 略
-
在脚本中
props.setProperty("propertyName", "88888888888")
2. 使用属性
-
在元件中
${__P(propertyName, defaultValue)}
-
在脚本中
def name = props.get("propertyName")
3. 删除属性
在脚本中
props.remove('propertyName')
3. 对象
在 JMeter 中,有一些内置对象可以在测试计划中使用,这些对象提供了方便的方法和属性来处理测试过程中的不同方面。以下是一些常用的 JMeter 内置对象:
1.log
(Logger) :日志记录器
用来记录日志
log.info("123123")
记录 info 级别的日志,内容为 123123- 其他日志等级还有:
- trace(最低)
- debug
- info
- warn
- error
- fatal (最高)
2. ctx
(JMeterContext):上下文
提供了与当前线程上下文相关的信息和方法
ctx.threadNum
:当前线程的编号(从 0 开始)。ctx.thread
:当前线程所属的线程对象。ctx.threadGroup
:当前线程所属的线程组对象。ctx.currentSampler
:当前正在执行的采样器对象。ctx.previousSampler
:上一个采样器对象ctx.previousResult
:上一个采样结果对象ctx.currentTime
:当前时间戳(毫秒)。ctx.variables
:当前线程的变量集合。
3. vars
(JMeterVariables):变量
当前线程的变量集合。
vars.get("variableName")
:获取指定变量的值。vars.put("variableName", "value")
:设置指定变量的值。vars.remove("variableName")
:移除指定变量。
4.props
(JMeterProperties):属性
提供了与 JMeter 属性相关的方法和属性。
props.get("propertyName")
:获取指定属性的值。props.put("propertyName", "value")
:设置指定属性的值。props.remove("propertyName")
:移除指定属性。
5.sampler
(Sampler):当前取样器
6.prev
(SampleResult):上一个取样结果
sampler.isSuccessful()
:检查采样器是否成功。sampler.getResponseDataAsString()
:以字符串形式获取响应数据。sampler.getSampleLabel()
:获取采样器的标签。
7. args
:JSR223 元 件参数(数组格式)
8. Label
:采样器标签(元件类型)
9.Filename
:JSR223 元件(文件名)
10.Parameters
:JSR223 元 件参数 (字符串)
11.OUT
: System.out(命令行输出)
OUT.println("12312311111111")
12.AssertionResult
(AssertionResult):断言结果
AssertionResult.setFailure(true)
AssertionResult.setFailureMessage("message")
内置对象可以在 JSR223 元件(如 Groovy、Benahsell)中使用,以访问和操作与测试过程相关的信息
通过使用这些内置对象,我们可以实现更高级和复杂的测试逻辑和操作。
请注意,在使用这些内置对象时,确保正确引用对象名称,并遵循相关的方法和属性的使用规则和文档说明。
标签:变量,对象,ctx,线程,JMeter,属性 From: https://www.cnblogs.com/daizichuan/p/18408180