'我们有API,其响应如下,键(湿度,温度)是动态的,取决于如何在空手道中验证模式的请求
{ "en_humidity": [
{
"value": "48",
"ts": 1718279604644
} ], "temperature": [
{
"value": "decryption failed",
"ts": 1717580459552
} ], "humidity": [
{
"value": "decryption failed",
"ts": 1718279604644
} ] }
首先阅读本文。也许您不应该尝试在测试中执行“逻辑”。根据我的经验,它只会使事情变得更加复杂,并且您的测试变得不那么可读:https://stackoverflow.com/a/54126724/143475
但作为一个例子,你可以这样做。
* def data = []
* karate.forEach(response, (k, v) => data.push(v[0]) )
* match each data == { value: '#string', ts: '#number' }
前两行将重复部分“展平”为单个 JSON 数组,然后你的断言就变得简单了。此处详细解释:https://stackoverflow.com/a/76912833/143475 - 因此您可以按照相同的方式添加所需的任何自定义逻辑。