2016-03-07 19 views
10

Her seferinde rastgele bir pozitif tam sayı oluşturmalı ve bunu Gatling'deki Json gövdesine göndermeliyim. Nasıl json vücuda rasgele oluşturulmuş değeri besleyebilir,Gatling'deki Json Body'da rastgele değer nasıl eklenir?

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

fakat:

rasgele bir pozitif ineger oluşturmak için aşağıdaki kod kullanılır?

Denedim:

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

Fakat, bu iş görünmüyor. Herhangi bir ipucu lütfen.

Teşekkürler! yeni değerler üretir iken) (ad CamelCase:

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

Yan comment: Scala kongre tarafından

her seferinde rastgele sayı oluşturmak isteyen tüm

cevap

20

Birincisi, böylece OrderRef gibi bir yöntem, olmak zorunda sonunda ; olmadan.

Hazırlanan yöntemi kullanmak için Gatling EL dizesini kullanamazsınız. Sözdizimi çok sınırlı ve temelde "${OrderRef}", Gatling Session'da OrderRef adıyla değişken arar. İşte

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

anonim işlevini mitralyöz Session alıp organ olarak String dönen yaratıyor:

Doğru yolu olarak İfade fonksiyonunu kullanmaktır. Dize, standart Scala dize enterpolasyon mekanizması ile oluşturulur ve hazır fonksiyon orderRef() önce kullanılır. Scala kullanırken

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

çok tercih edilmez stil: olarak

Tabii ki Scala dize interpolasyon atlayabilirsiniz.

Request Body belgelerine Gatling belgelerinde daha ayrıntılı bilgi alın ve Galting EL syntax hakkında daha fazla bilgi edinin. , Öncelikle besleyici farklı tanımlamak olduğu durum, o zaman oturumda ekleyin ve sonra mitralyöz EL aracılığıyla isteği gövdesine değerini kullanmak Burada

// 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 
) 

:

alternatif bir yolu Feeder'ı tanımlamaktır. Bu, besleyici değeri her sanal kullanıcı için oturuma eklenmeden önce Gatling tarafından besleyiciden alınırken çalışır. Besleyiciler here hakkında daha fazla bilgi edinin.

Öneri: Eğer senaryo basitse, ilk çözümle başlayın. Besleyiciler hakkında daha karmaşık düşünmek gerekiyorsa.

Hoşlanmak için

+0

Teşekkür ederim çok ...Beni çok fazla zaman kurtardınız :) –

+0

Rica ederim :) – Teliatko

+1

Bunu yapmanın ilk “doğru” yolu benim için çalışmadı. Alternatif yol işe yaradı. Teşekkürler. –

İlgili konular