将响应中的值与数据库中的值进行匹配

时间:2018-10-29 10:49:56

标签: karate

我的回答如下:

{  
   "data":[  
      {  
         "foo":bar1
         "user_email":"user@user.com",
         "user_id":1
      },
      {  
         "foo":bar2
         "user_email":"user@user.com",
         "user_id":1
      }
   ]
}
* def DBOutput = #fetching values from DB
* match response.data[*].foo contains [DBOutput1[0][0],DBOutput1[1][0]]

 DBOutput1 has data as follows : [["bar1"],["bar2"]]

此匹配失败,由于某些原因,传递给match语句中的预期列表的值为DBOutput1 [0] [0]

这是我得到的错误actual: ["bar1","bar2"], expected: 'DBOutput1[0][0]',

2 个答案:

答案 0 :(得分:1)

在上面的示例中,您有一些格式严重错误的JSON。以下代码段有效,只需将其粘贴到新的Scenario中即可:

* def response =
"""
{  
   "data":[  
      {  
         "foo": "bar1",
         "user_email":"user@user.com",
         "user_id":1
      },
      {  
         "foo": "bar2",
         "user_email":"user@user.com",
         "user_id":1
      }
   ]
}
"""
* match response.data[*].foo contains ['bar1', 'bar2']

现在,由您来修复测试,而又不知道您的DBOutput是什么,没人能进一步提供帮助。

答案 1 :(得分:1)

我遍历了DBoutput并将它们存储在新的数组列表中。然后,我将响应与列表匹配,就可以了。

  • 匹配response.data [*]。foo包含ListFromDB