在 JMeter 中使用 JMeterUtils.getProperty 与 __P 的优缺点是什么?

What are the pros and cons of using JMeterUtils.getProperty vs. __P in JMeter?

我正在研究一些使用 BeanShell 断言的 JMeter 测试计划。在这些断言中,我想访问一些用户属性。有几种方法可以访问它们:

JMeterUtils.getProperty("propertyName")
${__P(propertyName)
props.get("propertyName")

不同之处在哪里,每个选项的优缺点是什么?它们是相互包装还是具有特定功能?

谢谢!

在功能上它们完全相同。它们甚至以相同的方式实现 - 它们都在当前 jmeter 属性对象上调用 getProperty() 方法。

区别在于你在哪里使用它们。

  1. 将变量放入 JMeter GUI 文本框时使用 ${} 符号。例如,在 HTTP 采样器的字段中。请注意 __P 是 shorthand 的,并且与 __Property

  2. 完全相同
  3. props.get() 用于 beanshell 脚本,无需显式导入 JMeterUtils。你也可以结合 1&2 做 ${__BeanShell(props.get())}

  4. 如果您在 beanshell 中导入 JMeterUtils,或者您正在开发自定义 java class,那么您将使用 JMeterUtils.getProperty()

在这三个中,我认为#1 是最有效的,因为它不需要实例化和评估 beanshell

对于 Beanshell,您可以随意使用任何您喜欢的方法。

对于 JSR223 Test Elements and Groovy language which is recommended way of doing scripting in your JMeter test - avoid refering JMeter Variables and Functions using ${this way} as it prevents script from compilation and causes execution overhead. See Beanshell vs JSR223 vs Java JMeter Scripting: The Performance-Off You've Been Waiting For! 文章更详细的解释、不同的脚本方法基准和脚本最佳实践。