如何在响应中嵌套 JSON 时使用匹配包含验证 JSON 键的子集
How to validate Sub-Sets of JSON Keys using match contains when there are nested JSON's in the response
从回复中,我提取了这样一个子集。
{
"base": {
"first": {
"code": "1",
"description": "Its First"
},
"second": {
"code": "2",
"description": "Its Second"
},
"default": {
"last": {
"code": "last",
"description": "No"
}
}
}
}
如果我需要使用 进行单个验证并匹配 X 包含 以检查
- 首先里面的代码是 1
- default-last 里面的代码是最后一个?
我没有对每个验证都使用 json 路径,而是尝试提取特定部分并对其进行验证。如果没有嵌套的 json 路径,我可以很容易地使用 和匹配 X 包含 ,但是当有嵌套的 jsons 时,我不能去做。
这对你有用吗:
* def first = get[0] response..first
* match first.code == '1'
* def last = get[0] response..default.last
* match last.code == 'last'
编辑:好的看起来你想尽可能地压缩成一行,更重要的是能够在嵌套节点中做 contains
。就我个人而言,有时我觉得这不值得麻烦,但这里是。
另请参阅这些快捷方式:https://github.com/intuit/karate#contains-short-cuts
* def first = { code: "1" }
* match response.base.first contains first
* match response.base contains { first: '#(^first)' }
* def last = { code: 'last' }
* match response.base contains { first: '#(^first)', default: { last: '#(^last)' } }
嗯,我觉得我的问题略有不同。
例如,如果我使用 json 路径直接指向 first 并将其保存到变量 savedResponse,我可以执行此验证
And match savedResponse contains {code: "1"}
如果 first 下有 10 个键值组合,如果我需要验证其中的 6 个,我可以使用相同的 json 路径,我可以很容易地做到它使用匹配包含
如果我将上述响应保存到变量 savedResponse,我可以使用类似的方式使用匹配包含验证多个事物,在此。下面的语句无论如何都不起作用。
And match savedResponse contains {first:{code:"1"}, last:{code:"last"}}
但是,如果我修改某些内容,它会起作用吗?
从回复中,我提取了这样一个子集。
{
"base": {
"first": {
"code": "1",
"description": "Its First"
},
"second": {
"code": "2",
"description": "Its Second"
},
"default": {
"last": {
"code": "last",
"description": "No"
}
}
}
}
如果我需要使用 进行单个验证并匹配 X 包含 以检查
- 首先里面的代码是 1
- default-last 里面的代码是最后一个?
我没有对每个验证都使用 json 路径,而是尝试提取特定部分并对其进行验证。如果没有嵌套的 json 路径,我可以很容易地使用 和匹配 X 包含 ,但是当有嵌套的 jsons 时,我不能去做。
这对你有用吗:
* def first = get[0] response..first
* match first.code == '1'
* def last = get[0] response..default.last
* match last.code == 'last'
编辑:好的看起来你想尽可能地压缩成一行,更重要的是能够在嵌套节点中做 contains
。就我个人而言,有时我觉得这不值得麻烦,但这里是。
另请参阅这些快捷方式:https://github.com/intuit/karate#contains-short-cuts
* def first = { code: "1" }
* match response.base.first contains first
* match response.base contains { first: '#(^first)' }
* def last = { code: 'last' }
* match response.base contains { first: '#(^first)', default: { last: '#(^last)' } }
嗯,我觉得我的问题略有不同。 例如,如果我使用 json 路径直接指向 first 并将其保存到变量 savedResponse,我可以执行此验证
And match savedResponse contains {code: "1"}
如果 first 下有 10 个键值组合,如果我需要验证其中的 6 个,我可以使用相同的 json 路径,我可以很容易地做到它使用匹配包含
如果我将上述响应保存到变量 savedResponse,我可以使用类似的方式使用匹配包含验证多个事物,在此。下面的语句无论如何都不起作用。
And match savedResponse contains {first:{code:"1"}, last:{code:"last"}}
但是,如果我修改某些内容,它会起作用吗?