使用 json feeder 检查加特林测试响应正文

问题描述 投票:0回答:1

我正在尝试在加特林测试中检查服务调用的主体响应。但是,我想要一个 JSON 文件来检查预期的响应。为此,我使用 Feeder 并尝试使用从 Feeder 获取的值来评估实际响应。这是我所拥有的:

数据.json:

[
  {"out": "pong"}
]

SmallTest.java:

public class SmallTest extends Simulation {

    public SmallTest() {

        final HttpProtocolBuilder httpProtocol = http
                .baseUrl("https://example.com");

        final FeederBuilder<Object> feeder = jsonFile("data.json");

        final ChainBuilder call = exec(http("Api Response")
                .post("/ping")
                .check(status().is(200))
                .check(jsonPath("$.result").is("${out}")));

        final ScenarioBuilder scenario = scenario("Response Test")
                .feed(feeder)
                .exec(call);

        setUp(scenario
                .injectOpen(atOnceUsers(1))
        ).protocols(httpProtocol);
    }

}

${out}
声明不起作用。我收到一条错误消息:

jsonPath($.result).find.is(${out}),但是 居然找到了乒乓球

调用http://example.com/ping的结果是以下json响应:

{
   "result": "pong"
}

旁注:

我尝试使用

.check(substring("${out}").exists())
并且成功了。但这不是我想要的。似乎
${out}
is()
语句中不起作用

java gatling
1个回答
1
投票

我做错的是调用

is()
函数而不是
isEL()

这是因为这两个函数的工作原理。检查代码和文档以了解更多信息。

因此,使我之前的代码正常工作所需的更改是将

is("${out}")
更改为
isEL("${out}")

© www.soinside.com 2019 - 2024. All rights reserved.