如何在Jmeter-maven-plugin下的JMeter JSR 223预处理器中指定groovy文件?

5us2dqdw  于 2022-11-01  发布在  Maven
关注(0)|答案(1)|浏览(285)

我有几个JMeter jmx文件,每个文件都有一个用groovy编写的初始脚本,我使用一个JSR223预处理器指定文件名为src/test/jmeter/LoadScript.groovy。没有导入,至少我没有写过,只有标准的apache库。
这在GUI环境中工作得很好。我所有的测试都工作正常,它们共享同一个LoadScript.groovy文件。
当我尝试使用jmeter-maven-plugin在maven下运行时,它会崩溃,因为它为groovy文件提供了一个看起来很疯狂的路径。

/home/roger/myproject/target/f4e97418-cbab-4ac8-ac4b-3bfbd686279a/jmeter/bin/src/test/jmeter/LoadScript.groovy

我希望它只使用cwd加上我指定的文件路径。
我将其添加到jmeter-maven-plugin中,以便使用basedir定义一个属性

<configuration>
                <propertiesSystem>
                    <jmeter-base>${basedir}</jmeter-base>
                </propertiesSystem>
            </configuration>

并将我对groovy文件的所有引用都更改为在前面包含${jmeter-base}/。但我仍然得到file not found引用,现在的路径是:

/home/roger/myproject/datamanager-service/target/b9c995e2-699d-4d56-923b-a99afb566cfc/jmeter/bin/${jmeter-base}/src/test/jmeter/LoadScript.groovy

如果这样做成功了,那将是一个糟糕的解决方案,因为它不允许在GUI下运行测试。
我会尝试让maven将文件复制到错误消息中的目录,但其中的UUID是动态生成的,因此据我所知,这是不可能的。
一定有个简单的方法。有人知道是什么吗?

pgccezyw

pgccezyw1#

JMeter Maven插件:
1.将src/test/jmeter文件夹的内容复制到target/jmeter/testFiles
1.将文件服务器的baseDir设置为该文件夹
因此,如果您要使用相对路径-路径必须相对于此文件夹。
最简单和最灵活的方法是在JSR 223测试元素的“File Name”字段中使用以下__groovy()函数:

${__groovy(org.apache.jmeter.services.FileServer.getFileServer().getBaseDir(),)}/LoadScript.groovy

在所有情况下都将得到解决:

  • 通过maven以maven verify的形式运行JMeter
  • 通过maven以mvn jmeter:configure jmeter:gui的形式运行JMeter GUI
  • 从shell脚本或桌面快捷方式运行JMeter GUI,并通过浏览打开.jmx脚本

更多信息:How to Use the JMeter Maven Plugin

相关问题