所有你想要每次產生隨機數的第一,從而OrderRef
必須是一個方法,如:
def orderRef() = Random.nextInt(Integer.MAX_VALUE)
方意見:由斯卡拉約定:名稱駝峯,(),而它會產生新的價值,最終沒有;
。
要使用準備的方法,您不能使用Gatling EL字符串。語法非常有限,基本上"${OrderRef}"
在Gatling會話中搜索名稱爲OrderRef
的變量。
正確的方法是使用表達功能爲:
.exec(
http("OrderCreation")
.post("/abc/orders")
.body(StringBody(session => s"""{ "orderReference": "${orderRef()}" }""")).asJSON
)
在這裏,你創建匿名函數取加特林Session
和返回String
的身體。字符串由標準Scala字符串插值機制組成,並在使用之前使用函數orderRef()
。使用Scala的時候
.body(StringBody(session => "{ \"orderReference\": " + orderRef() +" }")).asJSON
這是不是很首選的樣式:
當然你也可以爲省略斯卡拉串插。
在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
第一個「正確」的方式做到這一點並不適合我。另一種方式確實奏效。謝謝。 –