2016-07-11 23 views
2

JMeter内でBeanShellスクリプトを作成してXMLメッセージを作成し、変数として保存しようとしています(SOAPサンプラーがメッセージを送信するようにしましたが、そうではありません本当にポイント)。スクリプト内では、私はランダムにいくつかの行を作成するループを持っており、そのポイントは、スクリプトがCSVファイルから新しい行を読み込むということです。ループはうまく動作しますが、何らかの理由でCSVread nextが動作しないように見えるので、CSVファイルから同じ行だけを使用しています。Jmeter beanshellスクリプトのcsvファイルの次の行

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

私はこの機能に慣れていないので、これを答えとして残したくないですが、私はあなたが '' 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

[新しいJava 8 Streams APIを使用して複数行の行のCSVファイルを解析する]の可能な複製(http://stackoverflow.com/questions/37865492/parsing-a-csv-file-for-a-multiplerow- rows-using-new-java-8-streams-api) –

答えて

0

残念ながら、_csvread()関数はBeanshellサンプラーのループ内では機能しません。 jmeterループコントローラを実装し、その下に__CSVread()関数を追加してみてください。

関連する問題