Прежде всего, вы хотите каждый раз генерировать случайное число, поэтому OrderRef
должен быть методом, например:
def orderRef() = Random.nextInt(Integer.MAX_VALUE)
Боковой комментарий: по соглашению Scala: назовите camelCase, (), пока он генерирует новые значения, без ;
в конце.
Для использования подготовленного метода нельзя использовать строку Gatling EL. Синтаксис очень ограничен и в основном "${OrderRef}"
ищет переменную с именем OrderRef
в сеансе Gatling.
Правильный способ - использовать функцию выражения как:
.exec(
http("OrderCreation")
.post("/abc/orders")
.body(StringBody(session => s"""{ "orderReference": "${orderRef()}" }""")).asJSON
)
Здесь вы создаете анонимную функцию, принимающую Гатлинга Session
и возвращающую String
в качестве тела. Строка составляется с помощью стандартного механизма интерполяции строк Scala и использует заранее подготовленную функцию orderRef()
.
Конечно, вы можете опустить строковую интерполяцию Scala как:
.body(StringBody(session => "{ \"orderReference\": " + orderRef() +" }" )).asJSON
что не является предпочтительным стилем при использовании Scala.
См. Дополнительную информацию в документации Gatling, чтобы тело запроса и узнать больше о Синтаксис Galting EL.
Альтернативный способ - определить фидер:
// 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
)
Здесь ситуация иная: сначала мы определяем источник, затем присоединяем его к сеансу, а затем используем его значение в теле запроса через строку Gatling EL. Это работает, пока значение фидера берется из фидера Gatling перед присоединением к сеансу для каждого виртуального пользователя. Дополнительную информацию о фидерах см. здесь.
Рекомендация: Если ваш сценарий прост, начните с первого решения. Если сложнее, подумайте о кормушках.
Наслаждаться
07.03.2016