2017-03-22 40 views
1

私はしばらくこの問題を抱えていました。私は、フォルダ内のファイルの数を基にループするテスト計画を持っていました。そして、ファイル内の行数を元に戻します。どちらも現在動作していますが、第1ファイルの行が第2ファイルよりも大きい場合、第2ファイルは第1ファイルと同じ番号をループします。JmeterがCSVファイルの正しい行数を取得しませんでした

例1

file1.csv --> 10 rows 
file2.csv --> 5 rows 

file1.csvがループ10倍、file2.csv意志もループ10回(すべき唯一のループ5)。

例2

file1.csv --> 5 rows 
file2.csv --> 10 rows 

file1.csvがループ10回、file2.csv意志ループ10回:

別のシナリオは、このです。

誰もがなぜこれが起こっているのかを説明することができ、これを修正する方法があります。

以下は私のテストプランのスクリーンショットです。おかげ

Screen Shot

+2

イメージの代わりにコードブロックにコードを投稿することはあまりにも頼まれるのですか? – Thomas

+0

BufferedReader reader =新しいBufferedReader(新しいFileReader(vars.get( "testPath")+ vars.get( "current_file"))); int counter = 0;用 (文字列ライン(ライン= reader.readLine())= NULL;!){ \t場合(カウンタ== 0){ \t \t \t \t VARS。put( "ヘッダ"、行);他 \t \t \t} { \t \t \t \t vars.put( "testCase_" +カウンタ、ライン) \t \t \t} } reader.close(); コードは次のとおりです。 –

+0

ええと、これはコメントでコードブロックではありません;) - あなたはあなたの質問を編集することができますか?単にコードをコメントに貼り付けるだけでは、人々がそれをもっと好きにすることや、フォーマットが不適切でコメントに散らばって読めるようになるので、より多くの助けになるのに適していません。 – Thomas

答えて

0

はどちらも、今取り組んでいる、問題は、最初の行が二以上である場合には、第2のファイルは最初のファイル>と同じ数のループです。

file1.csv - > 10行

file2.csv - あなたののForEachコントローラにtestCase_N変数を使用すると仮定すると、> 5行

あなたのスクリプトます変数をtestCase_1 .. testCase_10(vars.put()呼び出しで)の反復1に作成します。

反復2これは変数testCase_1 .. testCase_5を作成するためにvars.put()を呼び出します。

変数testCase_6 .. の反復1の後にtestCase_10がまだ存在し、内部ループで使用されます。

remove()メソッドを呼び出して残りの変数を削除することができます。

+0

あなたはremove()メソッドをどこに置くべきか考えていますか?私はそれをforループの中に挿入しようとしましたが、ループを1つに制限するだけです。ここに私のコードは次のとおりですため (文字列のライン(ライン= reader.readLine())= NULL;!){ \t場合(カウンタ== 0){ \t \t \t \t vars.put( "ヘッダ"、ライン);他 \t \t \t} { \t \t \t \t vars.put( "testCase_" +カウンタ、ライン) \t \t \t} \t remove( "testCase_" + counter); \t counter ++; } reader.close(); –

+0

@albertJ新しいエントリを追加する前に 'clear()'を呼び出すことができます。つまり、コードスニペットの先頭にあるすべてを削除します。 – Thomas

+0

変数を追加した直後に変数を削除しています。新しい変数を追加する前に、廃止された変数を 'remove()'するループを追加してください。ループ反復1で変数が追加されていない場合の特殊なケースを忘れないでください。 –

関連する問題