假设我有一个GET端点,结果如下所示
[
{
"id": 42,
"studentName": "John",
"alternateName1": "",
"alternateName2": "",
"code": "NS2",
"year": 2019
},
{
"id": 41,
"studentName": "John",
"alternateName1": "",
"alternateName2": "",
"code": "NS1",
"year": 2019
},
{
"id": 1,
"studentName": "Tom",
"alternateName1": "",
"alternateName2": "",
"code": "NS2",
"year": 2019
}
]
响应不会以基于ID或名称的顺序返回...。因此,在执行匹配以将其与数据库中相应查询的结果进行比较时,它变为“ FAILED”。尝试使用诸如Postman之类的工具来检查顺序,该顺序遵循“ id”并且与自然SQL查询相同。
此外,请遵循并自定义js函数'sort-array.feature'来对响应进行排序,但是响应类型是数组;因此,它不起作用。
我想知道我们如何根据配置的值(例如:id)或默认值(例如,“名称”)来处理响应的顺序,或者采用任何方法比较响应结果API端点(实际结果)到查询结果(预期结果)
非常感谢您。
答案 0 :(得分:0)
请阅读文档和示例,尤其要注意contains
。我在下面提供一个示例,剩下的就是您要做的作业(特别是因为您非常喜欢Postman:P)。将其粘贴到新的场景中,然后查看其工作情况。
* def response =
"""
[
{
"id": 42,
"studentName": "John",
"alternateName1": "",
"alternateName2": "",
"code": "NS2",
"year": 2019
},
{
"id": 41,
"studentName": "John",
"alternateName1": "",
"alternateName2": "",
"code": "NS1",
"year": 2019
},
{
"id": 1,
"studentName": "Tom",
"alternateName1": "",
"alternateName2": "",
"code": "NS2",
"year": 2019
}
]
"""
* match response[*].id contains only [1, 41, 42]
空手道允许您以多种方式创建甚至转换JSON,因此您几乎可以进行任何比较。