目录
概念:
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]值