以编程方式更新用于在Apache JMeter中使用HTTP请求发送文件的文件路径

mis*_*nry 4 variables jmeter httprequest filepath

我正在使用Apache JMeter 2.7加载测试Liferay.我正在创建的一个这样的测试涉及动态生成文件并将它们上传到Liferay的Document and Media portlet.我遇到的问题与Liferay无关......我知道这是因为如果我在HTTP请求中输入"使用请求发送文件"的"文件路径"框中的确切路径,我可以上传文档.这不是我需要运行测试的方式.

我希望测试以这样一种方式运行,即我使用不同的文件名UUID为测试的每个循环生成一个唯一的文件(我在BeanShell预处理器中这样做,它按我的意愿执行).我有一个用户定义的变量FILENAME,用于存储文件名.在HTTP请求中,对于文件路径,我使用路径,C:\Installs\Apache Jmeter\apache-jmeter-2.7\bin\${FILENAME}但JMeter不处理变量.

当我查看结果树时,我看到错误:

java.io.FileNotFoundException:C:\ Installs\Apache Jmeter\apache-jmeter-2.7\bin\$ {FILENAME}(系统找不到指定的文件)

但是,如果我硬编码文件路径(例如...\bin\doc.txt)并使用$ {FILENAME}作为文档标题的值(我在HTTP请求中发送的参数),则文档(doc.txt)上传到portlet,其字符串值为FILENAME作为标题.这让我知道正确的字符串存储在变量FILENAME中.由此可见,我推断JMeter不会替换文件路径中的变量来发送HTTP请求中的文件.如果我在这个结论中不正确,请告诉我如何解决我的错误.有没有其他人有这个问题?

我目前正在尝试通过向此http请求添加BeanShell PreProcessor来创建一种解决方法,该请求将使用变量名称动态更新文件路径.我需要设置一些variable = vars.get("FILENAME").任何人都知道如何从这里开始以编程方式设置HTTP文件路径?我正在寻找答案的API.任何帮助将非常感激,因为我现在完全被难倒了.

UBI*_*ACK 9

它失败了,因为你使用\${FILENAME}.
这个转义$ so变量不被解释.

解:

  • C:\\Installs\\Apache Jmeter\\apache-jmeter-2.7\\bin\\${FILENAME}
    (我无法测试,因为我在Mac OS上);
  • C:/Installs/Apache Jmeter/apache-jmeter-2.7/bin/${FILENAME}
    (这适用于Windows).

  • 更通用的方法是在创建文件路径时使用类似$ {__ BeanShell(File.separator,)}的构造,而不是尾随斜杠, - 这将粘贴相应的文件路径分隔符,具体取决于您使用的操作系统.例如$ {__ P(user.dir,)} $ {__ BeanShell(File.separator,)} $ {FILENAME}.就这样. (2认同)