我是 Scala 的新手,在從Stringto轉換時遇到了一些問題Long。我嘗試在請求中將 Gatling 會話值設為 Long。在 exec() 部分之前,我嘗試設定userId值
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 存盤在 Gating 會話中?
uj5u.com熱心網友回復:
從檔案中并根據您當前的代碼,一種方法是這樣的:
// 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])
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/481711.html
