1

我是 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,
    ///...///

谢谢你的帮助

4

1 回答 1

0

你的 JsonPath 是错误的。它应该只是

.check(jsonPath("$.._id").findAll.saveAs("id"))

[*]迭代数组时使用。但是指定..意味着您要对程序说要达到它所能达到的所有深度。

于 2020-08-21T09:30:44.110 回答