如何在加特林的两个场景之间传递价值? [英] How to pass value between two scenarios in gatling?

查看:59
本文介绍了如何在加特林的两个场景之间传递价值?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的脚本中有两种情况.我想将"CreateId"的值传递给第二种情况.我已经在第一种情况下保存了"CreateId".

I have two scenarios in my script. I want to pass value of "CreateId" to 2nd scenario. I have saved "CreateId" in 1st scenario.

错误说:

未定义名为"CreateId"的属性

No attribute named 'CreateId' is defined

jsonPath($.id).find(0).exists,什么也没找到

jsonPath($.id).find(0).exists, found nothing

场景-1

val create = scenario("Create")
        .exec(http("post_request_create")
        .post("/api/asdf")
        .headers(headers_10)
        .body(StringBody(session =>s"""{"name": "${randomName()}"}""")).asJSON
        .check(jsonPath("$.id")
        .saveAs("CreateId"))
        )

场景-2

val addTerm = scenario("Add Term")
        .repeat (repeatCount){
        exec(http("Add")

        // NOT WORKING
            //.post("""/api/asdfg/${CreateId}/terms""")

        // NOT WORKING
            .post(session => "/api/asdfg/" + session.get("CreateId").asOption[String] + "/terms")

            .headers(headers_10)
            .body(StringBody(session =>s"""{...somedata...}"""))
            )
        }
val scn = List(create.inject(atOnceUsers(1)),addTerm.inject(nothingFor(10 seconds), atOnceUsers(userCount)))
setUp(scn).protocols(httpProtocol)      

推荐答案

尝试以下代码即可.希望对其他人有帮助.

var CreateId = ""

Scenario - 1

val create = scenario("Create")
        .exec(http("post_request_create")
        .post("/api/asdf")
        .headers(headers_10)
        .body(StringBody(session =>s"""{"name": "${randomName()}"}""")).asJSON
        .check(jsonPath("$.id")
        .saveAs("CreateId"))
        )

        .exec(session => {
            CreateId = session("CreateId").as[String].trim
            println("%%%%%%%%%%% ID =====>>>>>>>>>> " + CreateId)     
            session}       
        )


Scenario - 2

val addTerm = scenario("Add Term")
    .exec(_.set("CreateId", CreateId)) // Set it here
       .repeat (repeatCount){
        exec(http("Add")
       .post("""/api/asdfg/${CreateId}/terms""")
       .headers(headers_10)
       .body(StringBody(session =>s"""{...somedata...}"""))
            )
        }
val scn = List(create.inject(atOnceUsers(1)),addTerm.inject(nothingFor(10 seconds), atOnceUsers(userCount)))
setUp(scn).protocols(httpProtocol)    

这篇关于如何在加特林的两个场景之间传递价值?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆