Получите случайное имя файла

#jmeter

Вопрос:

С папкой, содержащей около 10 файлов (например, 1.csv, 2.csv….10.csv), И я загружаю их в свой http-запрос с помощью препроцессора beanshell, используя следующий скрипт,

 File folder = new File("C:\User\SYSTEMTESTING\SAMPLENEWFILES\REUPLOADFILES");
File[] fileForUpload = folder.listFiles();
Random rnd = new Random();
vars.put("CURRENT_FILE", fileForUpload[rnd.nextInt(fileForUpload.length)].getAbsolutePath());
 

хотите получить имя файла, загруженного с помощью почтового обработчика JSR223

 log.info("File Uploaded Is :" ${CURRENT_FILE});
 

Я получаю,

 javax.script.ScriptException: org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed:
Script8.groovy: 1: Missing ')' @ line 1, column 79.
    "File Uploaded Is ------->" C:UsersSY
 

В теле запроса:

 PUT data:
--RhvwJL7ZdnIMBIaE0CoKVhsE68UNUiH
Content-Disposition: form-data; name="file"; filename="CSV_10_MB.csv"
Content-Type: application/vnd.ms-excel
Content-Transfer-Encoding: binary

<actual file content, not shown here>
--RhvwJL7ZdnIMBIaE0CoKVhsE68UNUiH--
 

Мне нужно CSV_10_MB.csv имя.

Ответ №1:

Воспользуйся vars.get :

  log.info("File Uploaded Is :"   vars.get("CURRENT_FILE"));
 

Ответ №2:

Если вы хотите использовать GString Groovy, вам нужно объявить это CURRENT_FILE свойство, если это то, что вы ищете, вам нужно изменить свой код следующим образом:

 def CURRENT_FILE = vars.get("CURRENT_FILE")
log.info("File Uploaded Is: ${CURRENT_FILE}")
 

или используйте ту же vars сокращенную форму для печати имени файла в журнале JMeter, например:

 log.info("File Uploaded Is: "   vars.get("CURRENT_FILE"))
 

Комментарии:

1. Большое спасибо, Дмитрий, File Uploaded Is ------->C:\User\SYSTEMTESTING\SAMPLENEWFILES\REUPLOADFILESCSV_10_MB.csv но я хочу получить CSV_10_MB.csv, как использовать подстроку

2. log.info("File Uploaded Is: " org.apache.commons.io.FilenameUtils.getName(vars.get("CURRENT_FILE")))