Groovy 脚本文件中的BSF断言不加载UDV

Groovy 脚本文件中的BSF断言不加载UDV,groovy,jmeter,beanshell,Groovy,Jmeter,Beanshell,我试图在JMeter中使用groovy脚本作为BSF断言。在JMETER断言脚本框中编写的脚本工作得很好,但是当我试图通过groovy文件使用它时,它没有加载断言所需的用户定义变量 上面说 org.apache.bsf.BSFException: exception from Groovy: groovy.lang.MissingPropertyException: No such property: mobileNumber class: D__RESTAPITesting_JmeterBSF

我试图在JMeter中使用groovy脚本作为BSF断言。在JMETER断言脚本框中编写的脚本工作得很好,但是当我试图通过groovy文件使用它时,它没有加载断言所需的用户定义变量

上面说

org.apache.bsf.BSFException: exception from Groovy: groovy.lang.MissingPropertyException: No such property: mobileNumber class: D__RESTAPITesting_JmeterBSFAssertionScripts_Script1
不确定当${..}引用变量时它为什么要查找属性(如果我没有错的话)。有关错误消息以及如何使用脚本文件进行断言的任何帮助

我编写的脚本保存为*.groovy。我是否需要将脚本保存在其他扩展中,以便BSF正确读取它

  • 通过参数输入传递用户定义的变量,如
    ${foo}${bar}
  • 在.groovy脚本正文中,将变量引用为
    args[0]args[1]
  • 有关详细信息(该解决方案也适用于文件输入)和有关使用JMeter断言的高级信息,请参见下图


    在我的例子中,我将使用我看到的几乎所有(超过10个)UDV脚本框都使用一些变量——“变量”。我可以使用vars对象来访问所有UDVS,这并不是因为它解决了您的问题,而是您应该始终更喜欢使用JSR223步骤而不是BSF步骤。我认为BSF是较新的JSR223的一个较旧的实现?是的,你是对的。我将从BSF转到JSR223。但我不知道我们是否有任何自动化技术来做到这一点。i、 e.我有大约150个BSF(断言/后/前处理器)的测试计划。不想花时间手动将每个BSF更改为JSR,除非我们有任何功能拦截器(比如Apache在后续版本中停止使用BSF…)。所以这项任务现在的优先级很低。是的,不需要重构已经起作用的东西。