如何使用Gatling

时间:2019-01-28 10:18:28

标签: json gatling findall scala-gatling gatling-jsonpath

我是Gatling和Scala的新手。 我正在尝试编写方案来测试API和执行一些http请求。 我有一个带有对象数组的JSON文件。 我想提取ID字段以实现与它的http请求(多次获取)。我正在尝试使用Feeder,但不确定其工作方式。

这是我的代码:

val jsonFileFeeder = jsonFile("test.json")

  val scn = scenario("Http mget document").feed(jsonFileFeeder)
    .repeat(requests, "i") {
      exec(http("document:mget")
        .post("http://" + host + ":7512/index/collection/_mGet")
        .header("something", jwt)
        .body(StringBody(""" \"ids\": $[id]"""))
        .check(jsonPath("$.._id[*]").findAll.saveAs("id"))
        .check(status.is(200))
      )
    }

所以基本上,我正在尝试从文件中获取ID(字段为“ _id”)并保存。

.check(jsonPath("$.._id[*]").findAll.saveAs("id"))

您可能会猜到,这不起作用,而且我遇到了这个错误:

10:00:52.115 [WARN ] i.g.h.e.r.DefaultStatsProcessor - Request 'document:mget' failed for user 1: jsonPath($.._id[*]).findAll.exists, found nothing

我的json文件是这样的:

[
    {
         "requestId":"99999",
         "status":200,
     ///...///
         "result":
         {
             "_id":"95F8NF",
             "_version":1,
    ///...///

感谢您的帮助

1 个答案:

答案 0 :(得分:0)

您的JsonPath错误。应该是

.check(jsonPath("$.._id").findAll.saveAs("id"))
在数组上迭代时使用

[*]。但是,指定..意味着您要对程序说要尽其所能。