Gatling:当前一个请求没有JSON响应时,如何在下一个请求中传递值?

时间:2016-09-28 13:20:38

标签: scala load-testing gatling

请考虑方案......         在这里,在GET请求中我找到了' derId'但它的回应不是JSON。         所以我无法在该请求中保存此值。

    .exec(http("OnClick")
        .get("/url/apz?action_id=1&SelectRadiobutton=1_${abcID}_${xyzID}_${zipID}")
        .headers(headers_1))
    .pause(2)
    .exec(http("PopUp")
        .post("/url/dis")
        .headers(headers_1)
        .formParam("action_id", "2")
        .formParam("abcId", "${abcID}")
        .formParam("rmft", "${rmftID}")
        .formParam("msg_id", "${msgID}")
        .formParam("matId", "${matID}"))
    .pause(1)
    .exec(http("Bananana")
        .post("/url/abc")
        .headers(headers_1)
        .formParam("abcId", "${abcID}")
        .formParam("msg_id", "${msgID}")
        .formParam("matId", "${matID}")
        .formParam("derId", "${??}"))

是否有任何方法或方法可以传递来自GET请求的下一个请求中的值???

或者

如果请求没有JSON响应,如何保存值

GET请求可以有JSON响应???

非常感谢您的帮助。

谢谢!

2 个答案:

答案 0 :(得分:0)

通过使用正则表达式方法,我们可以从jsp页面(而不是json)保存值。

例如:

.check(regex("""type="hidden" name="abcId" id="abcId" value="([\w=\/.\d_%+-.$]*)"""").saveAs("abcID"))

谢谢!

答案 1 :(得分:0)

我能够从类似问题中使用此答案(https://stackoverflow.com/a/40736282/9371636)来发出请求,然后使用来自第一个请求的JSON响应的输入参数的另一个请求。

示例API我正在测试:

/step1 -> returns { "key": 888 }
/step2/{key} -> returns { "key": 999 } if {key} passed in is == 888

Scala代码:

var step1 = exec(http("step1")
    .get("/step1")
    .check(jsonPath("$..key").optional.saveAs("key")))

var step2 = exec(http("step2")
    .get("/step2/${key}"))

val scn: ScenarioBuilder = scenario("SimulationName").exec(step1,
    doIf(session => session.contains("key")) {
        exec(step2)
    })