gpt4 book ai didi

java - 脚本每次对多个请求使用相同的名称,而不是每个请求使用不同的名称

转载 作者:行者123 更新时间:2023-11-30 06:50:45 27 4
gpt4 key购买 nike

我正在创建一个加特林脚本,它在 StringBody 中采用名称。名称每次都应该是唯一的,因此我必须生成不同的随机名称。下面的脚本生成不同的名称。

对于单用户来说它工作正常。对于多个用户,它会生成多个随机名称,但每次都使用相同的名称进行请求,而不是在每次请求时使用不同的名称。

就像如果我使用 userCount = 5,它将生成 5 个不同的字符串,但不幸的是它每次在 stringBody 中请求一个相同的字符串。我想要 5 个具有不同名称的请求。谁能帮帮我吗?谢谢。

这是代码:

import io.gatling.core.Predef._
import io.gatling.http.Predef._
import scala.concurrent.duration._
import scala.util.Random

class myTerm extends Simulation {

val scenarioRepeatCount = Integer.getInteger("scenarioRepeatCount", 1).toInt
val userCount = Integer.getInteger("userCount", 5).toInt
val TID = System.getProperty("TID", "13203462112")

// Methods for random char generator
def randomAlpha(length: Int): String = {
val chars = ('a' to 'z') ++ ('a' to 'z')
randomStringFromCharList(length, chars)
}

def randomStringFromCharList(length: Int, chars: Seq[Char]): String = {
val sb = new StringBuilder
for (i <- 1 to length) {
val randomNum = util.Random.nextInt(chars.length)
sb.append(chars(randomNum))
}
sb.toString
}

val httpProtocol = http
.connection("""keep-alive""")
.contentTypeHeader("""application/json""")

val scn = scenario("Create")
.repeat (scenarioRepeatCount) {
exec(http("Create with random names")
.post(s"""http://someurl/api/thri/$TID/terms""")
.body(StringBody("""{"term": """" + randomAlpha(7) + """"}""")) // Here randomAlpha(7) creates a string with 7 alphabates
)
}
setUp(scn.inject(atOnceUsers(userCount))).protocols(httpProtocol)
}

编辑2:

我在获取 assetId 时遇到问题,它打印“assetId”而不是值。请看下面的代码。

.foreach("${IdList}", "assetid") {
exec(http("Load_Asset_Details")
.get(s"""$addTagsUrl/am/images/loader.svg""")
.resources(
http("Actions_request")
.post(s"""$addTagsUrl/am/actions""")
.headers(headers_52)
.body(StringBody("""{"objects":[{"id":${assetid},"resource":"asset"}]}""")),
http("variant_request")
.get(s"""$addTagsUrl/am/variants%3BresourceType=asset""")
.headers(headers_6),
http("Keyframe_request")
.get(s"""$addTagsUrl/am/$${assetid}/keyframes""")
.headers(headers_6)))

.exec(http("Add Tags")
.post(s"""$addTagsUrl/am/$${assetid}/tags""")
.headers(headers_52)

//This prints value of assetid but does not generates random numbers
//.body(StringBody(s"""{"objectId":$${assetid},"objectType":"asset","name": "$tagName$randomNumber","accountId":4,"userId":5}"""))

// This generates random numbers but Doesnt assetid it prints "assetid" text instead of value
.body(StringBody(_ => """{"objectId":"""" + assetid + """" ,"objectType":"asset","name": """ + tagName + ThreadLocalRandom.current().nextInt(10, 80) + ""","accountId":4,"userId":5}"""))
)
}

最佳答案

这应该可以设置和检索用户 ID(我在这里使用 java.util.UUID):

scenario("add userId to request")
.exec(_.set("userId", UUID.randomUUID().toString())
.exec(
http("getCredentials ${userId}")
.get("/cred")
// [...]
)

自然地,userId 生成不应位于 repeat() 或任何其他循环内。

关于java - 脚本每次对多个请求使用相同的名称,而不是每个请求使用不同的名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42835645/

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