2016-03-07 61 views
10

毎回ランダムな正の整数を作成し、それをGatlingのJson本体に送信する必要があります。どのように私はJSON本体内にランダムに生成された値を供給することができ、GatlingのJson Bodyにランダムな値を追加するには?

val r = new scala.util.Random; 
val OrderRef = r.nextInt(Integer.MAX_VALUE); 

しかし:

は、私は、ランダムな正inegerを作成するために、以下のコードを使用しましたか?

は、私が試した:

.exec(http("OrderCreation") 
.post("/abc/orders") 
.body(StringBody("""{ "orderReference": "${OrderRef}"}""").asJson) 

しかし、これは動作するようには思えません。すべての手がかりをお願いします。

ありがとうございます!

答えて

20

あなたは乱数を毎回生成したいまず第一に、これOrderRefは、メソッドである必要がありますように:それは、新しい値を生成しながら、名前のキャメルケース、():

def orderRef() = Random.nextInt(Integer.MAX_VALUE) 

サイドコメント:Scalaの慣例により、 、最後に;はありません。

準備された方法を使用するには、Gatling ELストリングを使用することはできません。構文は非常に限られており、基本的に"${OrderRef}"はギャトリングセッションで名前がOrderRefの変数を検索します。ここでは、匿名関数ガトリングSessionを取ると体としてStringを返すを作成している

.exec(
    http("OrderCreation") 
    .post("/abc/orders") 
    .body(StringBody(session => s"""{ "orderReference": "${orderRef()}" }""")).asJSON 
) 

正しい方法はとして式の機能を使用することです。文字列は、標準のScala文字列補間メカニズムを使用して作成され、準備された関数orderRef()の前に使用されます。スカラを使用した場合

.body(StringBody(session => "{ \"orderReference\": " + orderRef() +" }")).asJSON 

非常に好まれていませんスタイル:として

もちろん、あなたはScalaの文字列補間を省略することができます。

詳細については、GatlingのドキュメントRequest Bodyを参照し、Galting EL syntaxを参照してください。

別の方法は、フィーダーを定義することです:

ここ
// Define an infinite feeder which calculates random numbers 
val orderRefs = Iterator.continually(
    // Random number will be accessible in session under variable "OrderRef" 
    Map("OrderRef" -> Random.nextInt(Integer.MAX_VALUE)) 
) 

val scn = scenario("RandomJsonBody") 
    .feed(orderRefs) // attaching feeder to session 
    .exec(
    http("OrderCreation") 
    .post("/abc/orders") 
    // Accessing variable "OrderRef" from session 
    .body(StringBody("""{ "orderReference": "${OrderRef}" }""")).asJSON 
) 

状況はまず、我々はセッションにアタッチして、ガトリングELを経由してリクエストボディにその値を使用し、その後、フィーダーを定義し、異なっています文字列。これは、各仮想ユーザーのセッションに接続する前に、Gatlingによってフィーダからフィーダ値が取得されている間に機能します。フィーダの詳細についてはhereをご覧ください。

おすすめ:シナリオが簡単な場合は、最初の解決策から始めます。それがフィーダーについてもっと複雑に考えるなら。

お楽しみください

+0

ありがとうございます...あなたは私に多くの時間を救った:) –

+0

あなたは大歓迎です:) – Teliatko

+1

それを行う最初の "正しい"方法は私のためには機能しませんでした。代わりの方法が働いた。ありがとう。 –

関連する問題