Gatling 会话 - 获取 Long 属性
Gatling session - get attribute as Long
我是 Scala 的新手,在从 String
转换为 Long
时遇到了一些问题。我尝试在请求中获得 Long 的 Gatling 会话值。在 exec() 部分之前,我尝试设置 userId value
def setUserId(): ChainBuilder = {
exec(session => session
.set("userId", Random.nextLong())
)
}
接下来,在请求创建者中,我想像那样使用它,因为我需要一个新的 userId 每次调用:
object UserRequestCreator {
def sampleUserRequest(currency: String): Request = {
Data data = new Data()
data.setUserId("${userId}".toLong)
data.setCurrency(currency)
}
}
测试场景:
exec(setUserId())
.exec(http("postUser")
.post(endpointUser).asXml
.headers(headers)
.body(StringBody(toXmlString(sampleUserRequest("EUR"), classOf[Request])))
.check(status.is(200))
但收到错误:
java.lang.NumberFormatException: For input string: "${userId}"
如何在 Scala 中解决这个问题?
我也尝试 Long.valueOf、JLong.parseLong("${userId"}, 16)、Try(BigDecimal(...)) 等,但无济于事。我认为问题出在 $ 符号上,但我没有看到从会话中获取此值的任何不同方法。也许可以在门控会话中存储 Long?
根据 documentation 并根据您当前的代码,一种方法如下:
// with a function payload
http("name").post("/")
.body(StringBody(session => s"""{ "foo": "${session("dynamicValueKey").as[String]}" }"""))
因此,在您的情况下:
StringBody(session => toXmlString(sampleUserRequest(session)("EUR"), classOf[Request])
def sampleUserRequest(session: Session)(currency: String): Request = {
//...
data.setUserId(session("userId").as[Long])
}
我是 Scala 的新手,在从 String
转换为 Long
时遇到了一些问题。我尝试在请求中获得 Long 的 Gatling 会话值。在 exec() 部分之前,我尝试设置 userId value
def setUserId(): ChainBuilder = {
exec(session => session
.set("userId", Random.nextLong())
)
}
接下来,在请求创建者中,我想像那样使用它,因为我需要一个新的 userId 每次调用:
object UserRequestCreator {
def sampleUserRequest(currency: String): Request = {
Data data = new Data()
data.setUserId("${userId}".toLong)
data.setCurrency(currency)
}
}
测试场景:
exec(setUserId())
.exec(http("postUser")
.post(endpointUser).asXml
.headers(headers)
.body(StringBody(toXmlString(sampleUserRequest("EUR"), classOf[Request])))
.check(status.is(200))
但收到错误:
java.lang.NumberFormatException: For input string: "${userId}"
如何在 Scala 中解决这个问题? 我也尝试 Long.valueOf、JLong.parseLong("${userId"}, 16)、Try(BigDecimal(...)) 等,但无济于事。我认为问题出在 $ 符号上,但我没有看到从会话中获取此值的任何不同方法。也许可以在门控会话中存储 Long?
根据 documentation 并根据您当前的代码,一种方法如下:
// with a function payload
http("name").post("/")
.body(StringBody(session => s"""{ "foo": "${session("dynamicValueKey").as[String]}" }"""))
因此,在您的情况下:
StringBody(session => toXmlString(sampleUserRequest(session)("EUR"), classOf[Request])
def sampleUserRequest(session: Session)(currency: String): Request = {
//...
data.setUserId(session("userId").as[Long])
}