如何验证嵌套JSON响应

时间:2019-09-10 11:55:58

标签: api karate

在使用空手道框架进行API测试中验证嵌套JSON响应时,我遇到了问题。

JSON响应:

Feed[
  { "item_type": "Cake" ,
    "title": "Birthday Cake",
    "Services":
     [
        {
        "id": "1",
        "name": {
            "first_name": "Rahul",
            "last_name": "Goyal"
         }
        },
        {
          "id": "2",
          "name":{
            "first_name": "Hitendra",
            "last_name": "garg"
           }
        }    

     ]
  },
  {
    "item_type":"Cycle",
    "title": "used by"
   },

  {
    "item_type": "College"
    "dept":
    [
         {"branch": "EC"},
         {"branch": "CSE"},
         {"branch": "CIVIL"}
    ]

  },

]
}

现在,我需要根据商品类型验证响应。我们可以看到,嵌套的JSON对于不同的item_type是不同的。

我尝试了以下解决方案

Item_type价值蛋糕的架构设计

  • def Feed_Cake_Service_name = {first_name:'#string',last_name:'#string'}
  • def Feed_Cake_Services = {id:'#string',name:#(Feed_Cake_Service_name)}
  • def Feed_Cake = {item_type:'#string',title:'#string',Services:'#[] Feed_Cake_Services'}
  • def Feed_Cake_Response = {Feed:'#[] Feed_Cake'}

item_type周期的架构设计

  • def Feed_Cycle = {item_type:'#string',title:'#string'}

学院类型项目的架构设计

  • def Feed_College_Dept_Branch = {分支:'#string'}
  • def Feed_College = {item_type:'#string',dept:'[] Feed_College_Dept_Branch'}

现在,如果我只想验证蛋糕类型,那么我已经写了以下匹配项

  • 匹配响应包含Feed_Cake_Response

但是这里我的测试用例失败了。因为它正在比较所有项目类型。

所以在这里我有两个问题

1。)我们如何比较特定的项目类型架构

2。)我们如何在一个匹配方程式中包含所有项目类型,因为任何项目类型都可以在JSON响应中出现,而我想验证所有

谢谢

1 个答案:

答案 0 :(得分:2)

我只给你一个提示。其余内容,请阅读documentation

* def item = { item_type: '#string', title: '##string', dept: '##[]', Services: '##[]' }
* match each response == item