2016-11-17 1 views
0

Кажется, что я не могу пройти через BeanShellInterpreter всякий раз, когда я пытаюсь использовать встроенную функцию __FileToString в скрипте BeanShell PreProcessor. Переменная FileContents заполняется, но скрипт терпит неудачу, и я не могу работать с ним. Вот код, и сообщения об ошибках ...Внутренние функции jmeter не работают BeanSHellInterpreter

try { 
Integer count=vars.get("SessionId").length()-5; 
vars.put("vAuth", vars.get("v_username") +  vars.get("SessionId").substring(count) + ":"); 
log.info("Writing a info message"); 
    ${__FileToString(C:/tmp/DeltaConnectDemoTool_3_2_0S1_5515/bin/request.txt,,FileContents)}; 

log.info("Writing a second info message"); 
} 
catch (Throwable ex) { 
    log.error("Failed to do this or that", ex); 
} 

Ошибка является

2016/11/17 15:52:18 ОШИБКА - jmeter.util.BeanShellInterpreter: Ошибка вызова BSH Метод: eval В файле: встроенная оценка: `` try {Integer count = vars.get ("SessionId"). length() - 5; vars.put ("vAuth", vars.get ... '' Encountered ":" в строке 5, колонка 8.

2016/11/17 15:52:18 WARN - jmeter.modifiers.BeanShellPreProcessor: проблема в скрипте BeanShell org.apache.jorphan.util.JMeterException: ошибка при вызове метода bsh: eval В файле: встроенная оценка: `` try {Integer count = vars.get ("SessionId"). length() - 5; vars. ставить ("Vauth", vars.get '' Засада... ":" в строке 5, колонка 8.

ответ

0

попытка положить строку путь к файлу в двойных кавычках, например:

${__FileToString("C:/tmp/DeltaConnectDemoTool_3_2_0S1_5515/bin/request.txt",,FileContents)}; 
0

Именно поэтому встраивание функций или переменные в тело скрипта не рекомендуется. У вас есть 2 альтернативных варианта:

  1. Используйте эту функцию в разделе «Параметры». Если функция возвращает некоторое значение, которое вы будете иметь возможность ссылаться в дальнейшем в коде Beanshell, как Parameters или bsh.args[0] как:

    Beanshell Parameters

  2. Реализовать функцию в коде Beanshell. В вашем случае это может быть FileUtils.readFileToString() функция:

    String FileContent = org.apache.commons.io.FileUtils.readFileToString(new File("request.txt")); 
    vars.put("FileContent", FileContent); 
    

См How to Use BeanShell: JMeter's Favorite Built-in Component для некоторой дополнительной информации о сценариях в JMeter

+0

Я не думаю, что вариант 1 будет работать для меня, поскольку у меня есть несколько файлов, чтобы открыть (по одному для каждого звонка RESTAPI, который я планирую сделать. Вариант 2 работал как шарм ... спасибо! PS: Где в документации говорится, что не использовать встроенные функции в корпусе сценария (на всякий случай есть другие указатели там для меня)? –

Смежные вопросы