【问题标题】:Karate-DSL doesn't return the response in an orderKarate-DSL 不按顺序返回响应
【发布时间】:2018-12-23 22:22:29
【问题描述】:

假设我有一个 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端点(实际结果)到查询结果(预期结果)

非常感谢。

【问题讨论】:

    标签: karate web-api-testing


    【解决方案1】:

    请阅读文档和示例,尤其注意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]
    

    Karate 允许您以多种方式创建甚至转换 JSON,因此您几乎可以进行任何您想要的比较。

    【讨论】:

    • 感谢您的快速回复。我还检查了包含但尚未尝试使用“仅包含”。通常,我们必须检查预期结果(数据库查询)和实际结果(API 调用),这就是为什么我希望预期和实际的响应应该完全相同,以确保没有作弊或意外通过:)。所以,我希望空手道板以后可以考虑一个排序功能来比较。无论如何,谢谢你的建议:)
    • @LearningandWorking 如果你真的想排序,你可以,但 IMO 你永远不需要它 contains only: stackoverflow.com/a/52932601/143475 - P.S.请将此答案标记为“已接受”-您似乎是 SO 的新手
    猜你喜欢
    • 2021-08-13
    • 2021-04-12
    • 1970-01-01
    • 2013-07-21
    • 2011-12-06
    • 2017-03-19
    • 1970-01-01
    • 2014-12-28
    • 2021-04-22
    相关资源
    最近更新 更多