指向文件位置的 JSR223 脚本抛出错误

问题描述

添加了 JSR223 预处理器以指向需要由 http 请求选择的文件。当我循环运行请求时,它每次都需要选择不同的文件,因此文件位置有点复杂。所以,我尝试了以下内容filePath in JSR223

但是,这会引发错误。我应该使用两个反斜杠吗?这也会引发错误

我正在使用以下方法获取项目位置中的文件夹:

${__BeanShell(import org.apache.jmeter.services.FileServer; FileServer.getFileServer().getBaseDir();)}\FiletoUpload\

但是,我需要在每个线程上访问不同的文件夹,因此通过 JSR223 脚本获取文件方法很复杂。有没有更简单的方法

解决方法

  1. 首先starting from JMeter 3.1 you're supposed to be using JSR223 Test ElementsGroovy language所以考虑迁移到__groovy() function

  2. 其次,您需要使用三重斜线,因为您需要:

    • 用另一个反斜杠转义 Java 字符串中的每个反斜杠

    • 第三个反斜杠是处理 JMeter 函数转义元字符(例如,如果你的函数包含逗号,你需要用反斜杠来转义它,如 \,

      ${__groovy(org.apache.jmeter.services.FileServer.getFileServer().getBaseDir() + '\\\Test Plan.jmx',)}
      

    或者您可以使用正斜杠:

    ${__groovy(org.apache.jmeter.services.FileServer.getFileServer().getBaseDir() + '/Test Plan.jmx',)} 
    

    或者去file.separator property

    ${__groovy(org.apache.jmeter.services.FileServer.getFileServer().getBaseDir() + System.getProperty('file.separator') + 'Test Plan.jmx',)}