我似乎无法用 ProduceTestMessage("A", "${userNames}") 修复最后一次 exec 调用 它需要一个当然是正确的列表,但是如何正确传递字符串的 userNames 列表??
当前仅限于 Scala 主要版本 2.13
这是我在另一个文件中的函数定义
def produceTestMessage(prop1: String, propLines: List[String]): ChainBuilder = {
..
}
这是我的最小化场景文件:
import io.gatling.core.structure.ChainBuilder
import io.gatling.http.Predef._
class MyScenario extends KafkaChainBuilder { {
def produceTestMessage(): ChainBuilder =
exec(produceTestMessage("A", session => session("${userNames}").as[List[String]]))
// Function to set session variables
def setSessionVariables(): ChainBuilder =
exec(session => session
.set("userId", "12345")
.set("userNames", List("john_doe", "jane_doe", "bob_smith")) // Setting userNames as a List[String]
)
// Function to use session variables in another chain call
def useSessionVariables(): ChainBuilder =
exec(http("Example Request")
.get("/user/${userId}/${userNames(0)}") // Accessing the first userName from the list
.check(status.is(200))
)
val httpConf = http.baseUrl("http://example.com") // Configure base URL
val scn = scenario("My Scenario")
.exec(setSessionVariables()) // Call function to set session variables
.exec(useSessionVariables()) // Call function to use session variables
.exec(produceTestMessage("A", "${userNames}"))
setUp(
scn.inject(atOnceUsers(1)) // Simulate one user
).protocols(httpConf)
}
任何帮助表示赞赏:)
您可以直接从函数中使用会话变量
class MySimulation extends Simulation {
def produceTestMessageL(): ChainBuilder =
exec(produceTestMessage("A"))
def setSessionVariables(): ChainBuilder = {
exec(session => session
.set("userId", "5")
.set("userNames", List("john_doe", "jane_doe", "bob_smith"))
)
}
def useSessionVariables(): ChainBuilder =
exec(http("Example Request")
.get("/users/#{userId}")
.check(status.is(200))
)
private val httpConf = http.baseUrl("https://jsonplaceholder.typicode.com")
private val scn = scenario("My Scenario")
.exec(setSessionVariables())
.exec(useSessionVariables())
.exec(produceTestMessageL())
setUp(
scn.inject(atOnceUsers(1))
).protocols(httpConf)
}
object Message extends StrictLogging {
def produceTestMessage(prop1: String): ChainBuilder =
exec(
session => {
val userId = session("userId").as[String]
val userNames = session("userNames").as[List[String]]
logger.info(s"$userNames")
logger.info(s"${userNames.head}")
logger.info(s"$userId")
session
}
)
}