Gatling-Session

概念:
Session is a virtual user’s state.
格式:
Map[String, Any]

存入数据

  • 通过 Feeders
  • 从响应中提取数据并保存(如 http check 中的 saveAs)
  • 通过 Session API 手动注入

示例:todo

feed(feeder)

取得数据

  • 通过 Expression Language 取得
  • 通过 Session API 手动取得

示例:todo

"${attributeName}"

Session API

设置数据:

// set(key: String, value: Any): Session    单个插入
val scn = scenario("scn").during(30 seconds) {
  // 正确的用法
  exec(session => {
    session.set("a", "1")
      .set("b", "2")
      .set("c", "3")
      .set("d", "4")
      .set("e", "5")
  })
  // 错误的用法
  exec(session => {
    session.set("a", "1")
    session.set("b", "2")
    session.set("c", "3")
    session.set("d", "4")
    session.set("e", "5") // 上面的都会被丢弃掉
  }),
}

// setAll(newAttributes: (String, Any)*): Session    接收可变参数
val scn = scenario("scn").during(30 seconds) {
  exec(session => {
    session.setAll(("a", "1"), ("b", "2"), ("c", "3"), ("d", "4"), ("e", "5"))
  })
}

// setAll(newAttributes: Iterable[(String, Any)]): Session    接收一个可迭代对象
val scn = scenario("scn").during(30 seconds) {
  exec(session => {
    session.setAll(Array(("a", "1"), ("b", "2"), ("c", "3"), ("d", "4"), ("e", "5")))
  })
}

// reset    重置
// reset all attributes but loop counters, timestamps and Gatling internals (baseUrl, caches, etc)
val scn = scenario("scn").during(30 seconds) {
  exec(session => {
    session..reset
  })
}

使用数据:

val scn = scenario("scn").during(30 seconds) {
  exec(session => {
    session.setAll(("a", "1"), ("b", "2"), ("c", "3"), ("d", "4"), ("e", "5"))
  }).exec(session => { // 注意:设置的Session数据需要在同一个链式调用下使用
    println(session)
    session
  })

  // 这里就取不到数据,是不同的Session
  exec(session => {
    println(session)
    session
  })
}

session.set("foo", "FOO")
// 注意:session("foo")并不是foo的值,而是一个wrapper(包装)
val attribute: SessionAttribute = session("foo")

val value = attribute.as[Int] // 返回Int值

val value = attribute.asOption[Int] // 获取Option[Int]值

val value = session("foo").validate[Int] // 返回Validation[Int]值

猜你喜欢

转载自www.cnblogs.com/CSunShine/p/11982732.html