4

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

我希望测试以这样一种方式运行,即在测试的每个循环中生成一个唯一的文件,文件名具有不同的 UUID(我在 BeanShell PreProcessor 中执行此操作,它按照我的意愿执行)。我有一个用户定义的变量 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) 以字符串值 FILENAME 作为标题上传到 portlet。这让我知道正确的字符串存储在变量 FILENAME 中。由此,我推断 JMeter 根本不会替换文件路径中的变量以在 HTTP 请求中发送文件。如果我在这个结论中不正确,请让我知道如何解决我遇到的任何错误。有没有其他人有这个问题?

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

4

1 回答 1

10

它失败了,因为您使用\${FILENAME}.
这会转义 $ 所以变量不会被解释。

解决方案:

  • C:\\Installs\\Apache Jmeter\\apache-jmeter-2.7\\bin\\${FILENAME}
    (我无法像在 Mac OS 上那样进行测试);
  • C:/Installs/Apache Jmeter/apache-jmeter-2.7/bin/${FILENAME}
    (这肯定适用于 Windows)。
于 2012-06-06T21:15:19.533 回答