Как я могу создать свою собственную функцию exec, которая имеет расширенную функциональность? - PullRequest
2 голосов
/ 07 октября 2019

Таким образом, я собираю множество функций вызова покоя, которые более или менее похожи на:

  val restCall = {
    exec(http("RestCall")
      .post("/restCall")
      .body(ElFileBody("json/body.json")).asJson
      .check(saveResponseToSession(status,bodyString,header))
    )
    .exec(session => {validateResponse(session)})
    .pause(Config.minDelayValue seconds, Config.maxDelayValue seconds)
  }

.check(saveResponseToSession(status,bodyString,header)) <- Сохраняет тело, статус и заголовок как переменные сеанса </p>

.exec(session => {validateResponse(session)}) <- проверяет статус, тело и заголовок в соответствии с моими пользовательскими потребностями. </p>

.pause(Config.minDelayValue seconds, Config.maxDelayValue seconds) <- пауза уровня моделирования, которая используется во всех моих транзакциях </p>

Эти трифункции выполняются на всех моих вызовах API, для меня это означает сотни строк дублирования кода ...

Я ищу способ создания / переопределения функции цепочки .exec, который будет включать эти 3функции в конце каждого вызова.

Так, например, приведенный выше пример будет выглядеть так:

  val restCall = {
    customExec(http("RestCall")
      .post("/restCall")
      .body(ElFileBody("json/body.json")).asJson)

Но также будет включать в себя:

      .check(saveResponseToSession(status,bodyString,header))
    )
    .exec(session => {validateResponse(session)})
    .pause(Config.minDelayValue seconds, Config.maxDelayValue seconds)
  }

, как я показал в первом примере.

1 Ответ

1 голос
/ 10 октября 2019

Вы могли бы просто иметь функцию, которая запускает ChainBuilder и затем выполняет шаги проверки и паузы после.

val restCall = {
  exec(http("RestCall")
    .post("/restCall")
    .body(ElFileBody("json/body.json")).asJson
    .check(saveResponseToSession(status,bodyString,header))
  )
}

def validateAndWait(chain: ChainBuilder) = 
  exec(chain)
  .exec(session => {validateResponse(session)})
  .pause(Config.minDelayValue seconds, Config.maxDelayValue seconds)

def scn = scenario("action with validation").exec(validateAndWait(restCall))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...