jmeter - 修改线程组之间的变量
问题描述
试图通过我想在线程组之间修改的变量来控制线程组(我按顺序执行 TG)。例子:
Test Plan
JSR223Preprocessor or Listener #tried them both
--> vars.put(key,Integer.toString(1));
ThreadGroup
---> x=key
JSR223Preprocessor/Listener
--> vars.put(key,Integer.toString(2));
ThreadGroup
---> x=key
两个 ThreadGroup 都将使用 key 的最后一个值(上例中的 2)?如何修改线程组执行之间的变量?
解决方案
根据JMeter 文档的函数和变量章节:
属性与变量不同。变量是线程本地的;属性对所有线程都是通用的,需要使用 __P 或 __property 函数来引用。
这意味着您使用
vars.put()
函数设置的任何值都将保持在当前线程(虚拟用户)的本地,如果您需要在线程组之间传递值 - 您将需要切换到props
简写方式或使用Inter-Thread Communication Plugin根据JMeter 文档的执行顺序章节
请注意,定时器、断言、预处理器和后处理器只有在它们适用的采样器时才会被处理。逻辑控制器和采样器按照它们在树中出现的顺序进行处理。其他测试元素根据发现的范围和测试元素的类型进行处理。[在一个类型中,元素按照它们在树中出现的顺序进行处理]。
同样根据JMeter 范围规则,在 PreProcessor 的情况下,代码在每个采样器之前执行,在每个采样器之后的侦听器的情况下,不确定这是否是您正在寻找的东西
推荐阅读
- python - 如何将文本格式更改为从 Python 拉到 Google 电子表格的表格的数字格式?
- css - 是否可以将此多色调 svg 过滤器导入程序并使用滑块微调效果?
- algorithm - 将整数的线性范围扩展到更大数组的算法
- node.js - 未捕获的类型错误:crypto.randomBytes 不是函数
- java - 无法将 int 转换为 int[] 并且未定义类型 int[]、int [] 的运算符
- python - Python:如何在 vscode 中更改脚本的执行位置?
- r - Issue running purrr::possible for error recovery inside ~ tibble
- php - 使用 curl 发布字符串和数组
- c# - 何时关闭 TcpClient 连接
- sql - 从 postgres 中的联接表中排除行的简单查询