web-dev-qa-db-ja.com

JMeterの値リストのリクエスト値を使用

私は過去にこれをすでに実行したと確信していますが、どういうわけか私は方法を理解することができません;-)それで、ここに私の問題があります:

特定のパラメーターを変更することにより、HTTPリクエストが反復ごとに変更されるJUnitテスト計画を作成しようとしています。したがって、たとえば5回の反復で、次のHTTPリクエストを実行します。

http://localhost:8080/test/foo.html?id=1
http://localhost:8080/test/foo.html?id=2
http://localhost:8080/test/foo.html?id=3
http://localhost:8080/test/foo.html?id=4
...

テスト計画のID値をグローバルに構成し、次のようにHTTPリクエストサンプラー内で使用します。

Path: /test/foo.html?id=${categoryId}

質問:識別子の値をグローバルに設定するにはどうすればいいですか(notを使用したいですStringFromFile)、サンプラーでそれらをどのように参照しますか?

19
perdian

これを行うにはいくつかの方法があります。

あなたができる値の配列があるとすると:

  • プリプロセッサ "User Parameters" を試して、ユーザー/ループごとに1つのエントリを作成します。
  • Beanshellスクリプトを使用して配列を作成し、ランダムに1つを選択して変数を設定します

リストしたとおりにそれらを参照します:${varName}

18
BlackGaff

${__StringFromArrayAtRandomIndex('3', '2', '54', '42')}の実装について。

たとえば、次のようにしてシナリオを簡単に実装できるとします。 BeanShell Sampler / BeanShell PostProcessor 少しのコード。

例えば。:

  • ソース変数を設定します(例: ユーザー定義変数 ):

    名前の値
    カテゴリ3,2,54,42,37 
    

    (つまり、区切り文字としてコンマを使用し、コンマの前後にスペースを入れないでください)。

  • 次のコードでadd BeanShell Sampler/PostProcessorを使用します。

     import Java.util.Random; 
     
     String [] categories =(vars.get( "categories"))。split( "、"); 
     
     int idx = new Random()。nextInt(categories.length); 
     String category =(categories [idx]); 
     
     vars.put( " categoryId "、category); 
    
  • スクリプトでさらにランダムに選択したフォームリストの値を${categoryId}として参照します。
17

リストからランダムな変数値を取得するには、最初にユーザー変数としてリストまたは使用可能な値をプレフィックスと増分インデックスで宣言します。

country_1     Spain 
country_2     France  
country_3     Portugal  
country_4     Italy 
country_5     England

次に、リストからプレフィックスと間隔のランダムなインデックスを連結したリストからランダムな値を取得できます。

${__V(country_${__Random(1,6,)})}  --> "Spain", "France", "Portugal", etc...

完全な説明については この答え をご覧ください。

7
AlexGuti

変数なしの最も単純なソリューションは、vars.getIteration()を使用して実行できます。

/test/foo.html?id=${__groovy(vars.getIteration())}
0
user7294900