加特林错误:无法生成请求:未定义名为 'jwtoken' 的属性



在scala中运行脚本时出现以下错误:"未能生成请求:未定义名为"jwtoken"的属性"我提取jwtoken的值,然后把它放在一个变量中,然后我想在另一个请求中读取它,我放了两个对象,因为我想运行两个场景:

class PPT_GET extends Simulation
{  val httpProtocol = http
.baseUrl("") // Here is the root for all relative URLs

val acteurscsv = csv("./src/test/resources/Data/ksp-acteurs.csv").circular
val jwt = "123"

object TokenGen {
val tokenGen = exec(http("access_token")
.post("https://URL1/token")
.header("Content-Type", "application/x-www-form-urlencoded")
.formParam("grant_type", value = "client_credentials") 
.formParam("client_id", value = "PRTAPIPPD")
.formParam("client_secret", value = "xxxxxx")
.check(status is 200, jsonPath("$.access_token").saveAs("atoken")))

.exec(http("jwt_token")
.get("https://bsc-ppd.web.bpifrance.fr/mga/sps/apiauthsvc/policy/AT4JWT")
.header("Authorization", "Bearer ${atoken}")
.header("CorrelationID", "someID")
.header("UsercallerSecret", "user1")
.header("UsercallerID", "X1")
.header("Accept", "application/json")
.check(status is 200, jsonPath("$.JWTFull").saveAs("jwtoken")))     //here i extract the variable jwtoken
}
object Acteurs {
val acteurs =
pause(80)
.feed(acteurscsv)
.exec(http("ksp-acteurs")
.get("https://URL1/ksp-acteurs/${ACTCODE}") 
.header("Authorization", "Bearer ${jwtoken}" )    // here where i have the erreor
.check(status is 200))
}

我放了两个对象,因为我想运行两个场景的

事情并非如此。场景是虚拟用户的旅程,数据保存在每个虚拟用户的名为Session的内存空间中。

因此,你不能在一个场景中通过检查来保存数据,而期望在另一个场景下找到它,因为这些场景将由不同的虚拟用户执行。

你必须在相同的场景中连锁你的请求,例如:

val scn = scenario("foo").exec(TokenGen.tokenGen, Acteurs.acteurs)

然后,如果你的目标是为你的测试生成一个单一的令牌,你可以使用全局参考和顺序场景:


var token: String = null
val generateToken = scenario("loadToken")
.exec(TokenGen.tokenGen)
.exec { session =>
token = session("jwtoken").as[String]
session
}

object Acteurs {
val acteurs =
feed(acteurscsv)
.exec(http("ksp-acteurs")
.get("https://URL1/ksp-acteurs/${ACTCODE}") 
.header("Authorization", _ => s"Bearer $token" )
.check(status is 200))
}
setUp(
generateToken.inject(atOnceUsers(1))
.andThen(
scenario("acteurs").exec(Acteurs.acteurs).inject(???)
)
)

最新更新