11

新しい変数を定義しました

Name        Value            Description
categories  (1, 2, 3, 4, 5)  my categories ids

私のパスでは、カテゴリからランダムな値を取得したい: category_id=my_random_value.

私もこれを試しました

category_id=${__StringFromArrayAtRandomindex('1', '2', '3', '4', '5'}

しかし、うまくいきません。

4

3 に答える 3

23

リストから確率変数値を取得するには、最初にユーザー変数としてリストまたは使用可能な値をプレフィックスとインクリメンタル インデックスと共に宣言します。

country_1     Spain 
country_2     France  
country_3     Portugal  
country_4     Italy 
country_5     England

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

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

説明

__Random関数は、間隔のインデックスを提供します。1 から 5 までの値を取得する__Random(1,6,)には、MAX 値に到達しないため、 を呼び出す必要があります。

__V関数は、指定された名前の変数の値を取得します。

${__Random(1,6,)}                 --> 1, 2, 3, 4, 5
country_${__Random(1,6,)}         --> "country_1", "country_2", etc...
${__V(country_${__Random(1,6,)})} --> "Spain", "France", "Portugal", etc...

例として、確率変数をリクエストの JSON 本文として使用するには、Body Data で次のようにします。

}
  "country":"${__V(country_${__Random(1,6,)})}"
}
于 2015-12-11T17:43:07.400 に答える
15

シナリオでは、JSR233コンポーネント( SamplerPreProcessorPostProcessor)を少しのjava/ groovyコードで使用してみることができます。

例えば:

  • 行ったようにデータを定義します。

    名前の値          
    カテゴリ1、2、3、4、5
    

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

  • 次のコードでJSR233サンプラー/プリプロセッサー/ポストプロセッサーを使用します。

    import java.util.Random;
    
    String[] categories = (vars.get("categories")).split(",");
    
    int idx = new Random().nextInt(categories.length);
    String category = (categories[idx]);
    
    vars.put("rnd_cat", category);
    
  • を使用してランダムに選択されたカテゴリを参照してください${rnd_cat}

于 2013-02-04T23:02:37.527 に答える
6

__StringFromArrayAtRandomindex は、JMeter コアの一部でも、JMeter プラグインの一部でもありません。

カスタム機能ですか?

さらに、最後に構文エラーがあります (欠落があります) :

${__StringFromArrayAtRandomindex('1', '2', '3', '4', '5')}

同じことを行うには、以下を含む CSV データ セットを使用します。

1
2
3
4
5

設定:

Variable Names=categoryId

その後、次のように使用できます。

${categoryId} 
于 2013-02-04T21:12:40.260 に答える