2016-07-11 6 views
2

Я пытаюсь создать скрипт BeanShell в JMeter для создания XML-сообщения и сохранить его как переменную (а затем, если вы хотите, чтобы пробник SOAP отправил сообщение, но это не так действительно точка). Внутри скрипта у меня есть цикл, который произвольно создает несколько строк, и дело в том, что каждый цикл скрипт считывает новую строку из файла CSV. Цикл работает нормально, но по какой-то причине CSVread next, похоже, не работает, поэтому каждый раз, когда он просто использует одну и ту же строку из файла CSV.Следующая строка из файла csv в скрипте beanshell Jmeter

Вот код, я использую:

try{ 

    //Use a random variable to loop for a random amount of times 
    randomnr = vars.get("randomvariable"); 
    int randomint = Integer.parseInt(randomnr); 
    int FiNr = 123456789; 

    //I'm using a stringbuilder to create the xml message 
    StringBuilder multi = new StringBuilder(); 

    for (int i=1; i<randomint; i++){ 
    multi.append("SomeXML"); 
    FiNr = ${__CSVRead(data.csv,0)}; //get a line from the csv 
    multi.append(""+FiNr); 
    multi.append("SomeMoreXML"); 
    ${__CSVRead(data.csv,next)}; //Go to the next line in the csv - doesn't seem to be working 
    } 

    vars.put("xmlmessage",multi.toString()); //put all of it in a variable 

} 
catch(Exception ex){ 
    log.warn("Something bad happened", ex); 
    throw ex; 
} 

Все работает за исключением того, что он не продвигается к следующей строке внутри цикла. Есть предположения?

+0

Я не знаком с этой функцией, поэтому я бы предпочел не оставлять это в качестве ответа, но я бы предположил, что вы хотите 'int FiNr = $ {__ CSVRead (data.csv, 0)};' вне ваш цикл for и '$ {__ CSVRead (data.csv, next)};' должен быть 'FiNr = $ {__ CSVRead (data.csv, next)};'. – RowlandB

+0

@RowlandB Спасибо, что указали, что это была ошибка программирования новобранец. К сожалению, это не решило проблему с файлом csv. Я обновил код. Кроме того, 'FiNr = $ {__ CSVRead (data.csv, next)};' не работает, потому что вам нужно указать столбец для функции, чтобы вернуть значение. –

+0

Возможный дубликат [Разбор CSV-файла для нескольких строк строк с использованием нового API-интерфейсов Java 8 Streams] (http://stackoverflow.com/questions/37865492/parsing-a-csv-file-for-a-multiple-row- строк, использующих новый Java-8-потоки-API) –

ответ

0

К сожалению, функция _csvread() не будет работать с петлей внутри пробоотборника Beanshell. Попробуйте реализовать контроллер jmeter Loop и добавьте функцию __CSVread().

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

  • Нет связанных вопросов^_^