Код:
package simulations
import io.gatling.core.Predef._
import io.gatling.http.Predef._
class StarWarsBasicExample extends Simulation
{
// 1 Http Conf
val httpConf = http.baseUrl("https://swapi.dev/api/films/")
// 2 Scenario Definition
val scn = scenario("Star Wars API")
.exec(http("Get Number")
.get("4")
.check(jsonPath("$.episode_id")
.saveAs("episodeId"))
)
.exec(session => {
val movie = session("episodeId").as[String]
session.set("episode",movie)
}).pause(4)
.exec(http("$episode")
.get("$episode"))
// 3 Load Scenario
setUp(
scn.inject(atOnceUsers(1)))
.protocols(httpConf)
}
Пытается получить переменную из первого запроса Get и вставить эту переменную во второй запрос, но не может этого сделать, несмотря на использование документации. Возможно, я чего-то не понимаю.
Когда я использую точки останова и перемещаюсь по процессу, кажется, что выполнение сеанса происходит ПОСЛЕ того, как оба других запроса были завершены (к этому времени уже слишком поздно). Похоже, что выполнение сеанса не может происходить между двумя запросами.
http(...)...
- это просто статический объект, описывающий HTTP-вызов. Если вы не углубились в Gatling и не добавили туда точки останова, то, скорее всего, произошло то, что вы сравнили время создания этих объектов и время выполнения функции сеанса. - person George Leung   schedule 12.02.2021