1

我有json例如下面

{"TestJson":{  
  "Result":"Passed",
  "description":"Passed."},
  "Students":[{  
     "Class":{  
        "Primary":"Yes"
     },
     "Course":{  
        "Enrolled":"yes",
         "AccountNumber":"2387287382"
     },
     "AccountNumber":"2387287382",
     "Paid":"Yes"
  }]}

我想知道如何找到一个好的解决方案。

我目前在做什么

.body("Students[0].Course.AccountNumber",equalTo("2387287382"))
.body("Students[0].AccountNumber",equalTo("2387287382"))

我的测试标准是检查关键Students[0].AccountNumber匹配Students[0].Course.AccountNumber


我想这样做,但我无法找到类似的解决方案

.body("Students[0].Course.AccountNumber",equalTo("Students[0].AccountNumber"))

以上显然不会起作用,但这就是我想要比较的方式。基本上将密钥与另一个密钥进行比较,它们应该匹配。

这是可行的吗?

4

2 回答 2

1

一种方法是:

String A = 
given ().
when().
get/put/post({api/name})
.extract()
.path("Students[0].Course.AccountNumber");

String B = 
given ().
when().
get/put/post({api/name})
.extract()
.path("Students[0].AccountNumber");

Assert.assertEquals(A, B);

似乎这种解决方法是唯一的方法。

于 2018-08-21T17:57:00.427 回答
0

请参阅放心文档的使用响应来验证响应部分的其他部分。您基本上想创建一个实现ResponseAwareMatcher<Response>. 像这样的东西:

get("/x").then().body("href", response -> equalTo("http://localhost:8080/" + response.path("userId"));
于 2020-08-24T20:27:27.623 回答