空手道中每个元素的匹配字符串 json 数组响应

Match String json array response for each element in Karate

我有一个 api which returns string json 数组响应如下。响应中还有其他元素。

"contacts": [
  "externaldeveloper1@exampledomain.com",
  "externa2developer1@exampledomain.com"
]

现在我需要匹配这个数组中的每个元素来检查它的值。

在功能文件中:

When method POST
Then status 200
* match  response.contacts contains ['externaldeveloper1@exampledomain.com', externa2developer1@exampledomain.com]

但是出现语法错误:

match  response.contacts contains ['externaldeveloper1@exampledomain.com', externa2developer1@exampledomain.com]

连我都在做 assert response.contacts.[0] == 'externaldeveloper1@exampledomain.com' 这也失败了。有帮助吗?

适合我。你一定有什么错别字或基本错误。

* def response = { "contacts": [ "externaldeveloper1@exampledomain.com", "externa2developer1@exampledomain.com" ] }
* match response.contacts contains [ 'externaldeveloper1@exampledomain.com', 'externa2developer1@exampledomain.com' ]
* match response.contacts[1] == 'externa2developer1@exampledomain.com'

如果你的空手道代码

When method POST
Then status 200
* match  response.contacts contains ['externaldeveloper1@exampledomain.com', externa2developer1@exampledomain.com]

和你测试用的一样,那么语法错误是你忘了把第二封邮件用引号引起来

正确:

When method POST
Then status 200
* match  response.contacts contains ['externaldeveloper1@exampledomain.com', 'externa2developer1@exampledomain.com']

原因

* assert response.contacts.[0] == 'externaldeveloper1@exampledomain.com'

失败很简单。 contacts 后面的点太多了。

正确:

* assert response.contacts[0] == 'externaldeveloper1@exampledomain.com'