gpt4 book ai didi

json - 如何在加特林的Json Body中添加随机值?

转载 作者:行者123 更新时间:2023-12-03 13:20:47 25 4
gpt4 key购买 nike

我每次都需要创建一个随机正整数,并将其发送到加特林的Json正文。

我使用以下代码创建了一个随机正整数:

val  r = new scala.util.Random;
val OrderRef = r.nextInt(Integer.MAX_VALUE);

但是,如何将随机生成的值输入json主体?

我试过了:
.exec(http("OrderCreation")
.post("/abc/orders")
.body(StringBody("""{ "orderReference": "${OrderRef}"}""").asJson)

但是,这似乎不起作用。请提供任何线索。

谢谢!

最佳答案

首先,您想每次生成随机数,因此OrderRef必须是一种方法,例如:

def orderRef() = Random.nextInt(Integer.MAX_VALUE)

旁注:根据Scala约定:名称camelCase,()会生成新值,但最后不带 ;

要使用准备好的方法,您不能使用Gatling EL字符串。语法非常有限,基本上 "${OrderRef}"在Gatling Session中搜索名称为 OrderRef的变量。

正确的方法是将Expression函数用作:
.exec(
http("OrderCreation")
.post("/abc/orders")
.body(StringBody(session => s"""{ "orderReference": "${orderRef()}" }""")).asJSON
)

在这里,您将创建一个匿名函数,将Gatling Session并返回 String作为正文。字符串通过标准Scala字符串插值机制组成,并在准备好的函数 orderRef()之前使用。

当然,您可以将Scala字符串插值省略为:
.body(StringBody(session => "{ \"orderReference\": " + orderRef() +" }" )).asJSON

当使用Scala时,这不是很喜欢的样式。

在Gatling文档中查看 Request Body的更多详细信息,并阅读有关 Galting EL syntax的更多信息。

另一种方法是定义Feeder:
// Define an infinite feeder which calculates random numbers 
val orderRefs = Iterator.continually(
// Random number will be accessible in session under variable "OrderRef"
Map("OrderRef" -> Random.nextInt(Integer.MAX_VALUE))
)

val scn = scenario("RandomJsonBody")
.feed(orderRefs) // attaching feeder to session
.exec(
http("OrderCreation")
.post("/abc/orders")
// Accessing variable "OrderRef" from session
.body(StringBody("""{ "orderReference": "${OrderRef}" }""")).asJSON
)

这里的情况有所不同,首先定义供稿器,然后将其附加到 session ,然后通过Gatling EL字符串在请求正文中使用其值。在每个虚拟用户附加到 session 之前,Gatling从馈线中获取馈线值时,此方法有效。查看更多有关支线 here的信息。

建议:如果您的场景很简单,请从第一个解决方案开始。如果需要更复杂的方法,请考虑馈线。

请享用

关于json - 如何在加特林的Json Body中添加随机值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35843371/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com