首页 > 解决方案 > 如何将属性或线程组变量传递给 sample_variables=

问题描述

我想使用属性 sample_variables= 将线程组 1 中的变量作为自定义字段添加到 jtl 文件中,用于线程组 2 报告的行。尝试 w 从线程组 1 创建局部变量的属性,但 sample_variables 似乎没有打印属性。

无论如何,我可以为线程组 2 中的每次执行记录线程组 1 中的变量吗?

Test Plan (initiated w property sample_variables=var1)
--> Thread Group 1
----> JDBC request setting var1   # this prints var1 nicely to the jtl file
--> Thread Group 2
---> Another JDBC request   # this prints "null" to jtl (as var1 is local to TG1)

标签: jmeter

解决方案


  1. 当您使用Sample Variables属性时,您指示 JMeter 将定义的变量值保存到 .jtl 结果文件中的额外列中

  2. 根据JMeter 文档

    属性与变量不同。变量是线程本地的;属性对所有线程都是通用的,需要使用 __P 或 __property 函数来引用。

如果您只想将单个值从线程组 1 复制到线程组 2,您需要:

  • JSR223 Sampler添加到 Thread Group 1 的末尾

  • 将以下代码放入“脚本”区域:

    prev.setIgnore() //don't save this JSR223 Sampler in listeners or .jtl result file
    props.put('var1', vars.get('var1')) // convert var1 variable into a JMeter property
    
  • 将 JSR223 Sampler 添加到 Thread Group 2 的开头

  • 将以下代码放入“脚本”区域:

    prev.setIgnore()
    vars.put('var1',props.get('var1')) // convert var1 property into a JMeter Variable
    

上面的代码propsjava.util.Properties的一个实例,vars代表JMeterVariables,请参阅您应该与 Groovy 一起使用的 8 个 JMeter Java 类,以获取有关此和其他可用于 JSR223 测试元素的 JMeter API 简写的更多信息。


推荐阅读