2016-10-03 8 views
0

各スレッドがCSVファイルから同じ行を選択できますか?Jmeter:パラメータ設定

例えば、私は5人のユーザーと5つのレコード(行)が私のCSVファイルにあります。各反復では、CSVの最初の値をすべてのユーザーと同様にUser1に割り当てる必要があります。

User1: myID1,pass1,item1,product1 
User2: myID2,pass2,item2,product2 
User3: myID3,pass3,item3,product3 
User4: myID14,pass4,item4,product4 
User5: myID15,pass5,item5,product5 

。 。 解決策はありますか?

+0

スレッド数はいくつありますか? –

答えて

1
  1. CSVに5つのスレッドと5行しかない場合は、CSVを使用する代わりにUser Parametersに切り替えることをお勧めします。
  2. CSVファイルが5行以上あり、テストに5人以上の仮想ユーザーがあり、「ユーザー1が1行目」のような必要条件を満たす必要がある場合、CSVファイルをメモリにプリロードする必要があります。以下のようなBeanshell Samplerようなスクリプトのテストエレメント:

    • (1つのスレッドと1回の繰り返しで)あなたのテスト計画へ

    • をセットアップスレッドグループを追加BeanShellのサンプラーを追加し、「スクリプト」領域に以下のコードを置く:

      import org.apache.commons.io.FileUtils; 
      
      List lines = FileUtils.readLines(new File("test.csv")); 
      bsh.shared.lines = lines; 
      

    上記のコードは、test.csvファイルの内容を読み取る(あなたのCSVファイルへの相対または完全パスと交換)とbsh.shared namespace

    • にそれを保存するあなたの要求の子としてBeanShellのプリプロセッサを追加しますCSVファイルからの値を使用し、「スクリプト」領域に以下のコードを配置する必要があります。

      int user = ctx.getThreadNum(); 
      String line = bsh.shared.lines.get(user); 
      
      String[] tokens = line.split(","); 
      
      vars.put("ID", tokens[0]); 
      vars.put("pass", tokens[1]); 
      vars.put("item", tokens[2]); 
      vars.put("product", tokens[3]); 
      

    上記のコードは、リストから目を行をフェッチしますオア現在の仮想ユーザー数に基づかbsh.shared名前空間で、カンマでそれを分割し、あなたのようにそれらにアクセスすることができるようになりますので、JMeterの変数に値を格納します。

    • ${ID}
    • ${pass}
    • ${item}
    • ${product}

JMeterテストでBeanshellスクリプトを使用する方法の詳細については、How to Use BeanShell: JMeter's Favorite Built-in Componentのガイドを参照してください。

+0

問題が解決しました。まことにありがとうございます – PerfMatrix

関連する問題