あなたは乱数を毎回生成したいまず第一に、これ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をご覧ください。
おすすめ:シナリオが簡単な場合は、最初の解決策から始めます。それがフィーダーについてもっと複雑に考えるなら。
お楽しみください
ありがとうございます...あなたは私に多くの時間を救った:) –
あなたは大歓迎です:) – Teliatko
それを行う最初の "正しい"方法は私のためには機能しませんでした。代わりの方法が働いた。ありがとう。 –