Построить Dynami c json запрос с помощью Gatling - PullRequest
0 голосов
/ 17 апреля 2020

Я пытаюсь создать случайные json запросы, используя данные из файла CSV. Я определил свою функцию .scenario следующим образом

Но когда я устанавливаю уровень журнала для трассировки, я вижу все запросы, имеющие одинаковые значения. Я что-то упускаю?

def getScenario () = {
         scenario("Create API Promotions")
        .exec(
            http("Create Request")
            .post(createApiURL)
            .headers(headers_1)
            .body(StringBody(getCreateRequest))
            .check(status.is(200))
            )
    }


    def getCreateRequest: String = {
         val data = s"""
          {
            "Specification":{  

                "Item":${getItems()}
            }
          }
          """.stripMargin
          data   
    }

def getItems (): String = {
        val record: Map[String, Any] = getItemsFromCSV()
        val code: String = record("Code").toString
        val clientDataType: String = record("Type").toString

        val clientData =    (
                                ("Code" -> code) ~
                                ("Type" -> clientDataType)                                 
                            )
        val targetJson = List(clientData);
        return compact(render(targetJson))
    }

    def getItemsFromCSV() : Map[String, Any] = {

            val items: Seq[Map[String, Any]] = csv("../resources/create/items.csv").readRecords
            return promoTarget(getRandomNumber(0, items.length-1)) 
    }

1 Ответ

0 голосов
/ 22 апреля 2020

Gatling EL предоставляет встроенную функцию (jsonStringify()), которая правильно форматирует объект в значение JSON (заключает строки в двойные кавычки, обрабатывает нуль и т. Д. c.)

Дополнительно Я думаю, вы могли бы использовать фидер для получения значений CSV.

val items = csv("../resources/create/items.csv").random

scenario("Create API Promotions")
  .feed(items)
  .exec(buildPostData)
  .exec(http("Create Request")
    .post(createApiURL)
    .headers(headers_1)
    .body(StringBody("${postData.jsonStringify()}"))
    .check(status.is(200))
  )

def buildPostData: Expression[Session] = session => {
  val postData: Map[String, Any] =
      Map(
        "Code" -> session("Code").as[String],
        "Type" -> session("Type").as[String]
      )
  session.set("postData", postData)
}

Официальные ссылки c:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...