我有下面的代码,可以发出一个简单的POST请求。它应该如何工作?在发出请求之前,我生成一个测试值"orderName1"
,并将其保存到会话中。接下来,我使用函数"create"
发出请求,并在函数中使用生成的值。它工作正常!我的请求成功了。因此,我有一个动态生成名称为"Name_68hKl90G"
的订单。但是我想将从服务器返回的id
保存到会话中。我想将"Name_68hKl90G"
作为key
使用到会话中。
- 工作方式(会议):**
订单名称1-〉名称_68hKl90G
姓名:68hKl90G-〉63d80b25cb6c2a7e7e845e40
- 实际工作方式(会话):**
订单名称1-〉名称_68hKl90G
${订单名称1}-〉63d80b25cb6c2a7e7e845e40
代码:
val generateStr = (symbols: Integer) => Random.alphanumeric.take(symbols).mkString
val prepareData = exec(
session => {
val newSession = session
.set("orderName1", "Name_" + generateStr(8))
newSession
}
)
def create(name: String) = exec(
http("Create order")
.post("/shop/order")
.body(StringBody(s"""{"name":"${name}"}""".stripMargin)).asJson
.check(status.is(201))
.check(jsonPath("$.id").saveAs(s"${name}"))
)
val userScn = scenario("Scenario")
.exec(
prepareData,
create("${orderName1}")
)
setUp(
userScn.inject(rampUsers(rampUpUserCount) during (rampUpDuration seconds)),
).protocols(httpProtocol)
2条答案
按热度按时间uhry853o1#
老实说,这看起来太复杂了,我不明白为什么你不想使用两个不同的属性,一个用于键,一个用于值。
ibps3vxo2#
不需要使用会话值作为其他值的键。您可以通过以下代码满足所有需要: