多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
[toc] # JSONPath Existence Match Assertion JSONPath 存在匹配断言使用 JSONPath 表达式从目标属性中选择内容,并检查它是否存在。 本断言中的 JSONPath 表达式返回一个布尔值。要比较预期值与指定内容,请使用 [JSONPath Match](JSONPathMatch.md) 断言。 >[warning]本断言仅适用于包含 JSON 数据的请求和响应。 要了解更多关于 JSONPath 语法的知识,请参阅 [JSONPath](JSONPath.md) 。 ## 适用场景 您可以在 ReadyAPI 套件的不同应用程序中使用这个断言。根据应用程序的不同,断言验证以下数据: | 应用 | 检查数据 | 更多信息 | | --- | --- | --- | | [SoapUI](SoapUI.md) | request 和 response body | [SoapUI 断言](断言.md) | | [Secure](Secure.md) | response body | [Secure 断言](Secure断言.md) | | [ServiceV](ServiceV.md) | request body | [ServiceV 断言](ServiceV断言.md) | ## 创建断言 1、在对话框的左边,选择 **Property Content** 类别。 2、在对话框的右边,选择 **JSONPath Existence Match** 。 3、点击 **Add** 。 **SoapUI** ![](https://support.smartbear.com/readyapi/docs/_images/testing/assertions/reference/create-soap.png) **Secure** ![](https://support.smartbear.com/readyapi/docs/_images/testing/assertions/reference/create-secure.png) **ServiceV** ![](https://support.smartbear.com/readyapi/docs/_images/testing/assertions/reference/create-servicev.png) ## 设置断言 1、在 **JSONPath Expression** 编辑框,输入 JSONPath 表达式(指向要检查的元素,检查其是否存在),或者使用工具栏按钮 <img class="aqInlineImg" src="https://support.smartbear.com/readyapi/docs/_images/icon/node.png" > 自动生成表达式。 >[warning]1、要使用工具栏按钮,请至少运行一次 request(用于断言的 request )。 2、**JSONPath Expression** 编辑框,不支持使用属性扩展,如:`${REST Request#Response#$['data']['token']}` 。 ![](https://support.smartbear.com/readyapi/docs/_images/testing/assertions/reference/property/json-exist.png) 自动生成表达式的工具栏按钮: | 按钮 | 描述 | | --- | --- | | <img class="aqInlineImg" src="https://support.smartbear.com/readyapi/docs/_images/icon/node.png" > | 调用一个对话框,从最近的一次请求或响应中选择一个节点,并为该节点创建一个 JSONPath 表达式。 | 2、在 **Expected Result** 编辑框,输入预期值。 如果要可视化地选择预期结果,使用下面这些选项: | 选项 | 描述 | | --- | --- | | Select Content | 可视化地生成一个 [属性扩展](属性扩展.md) ,并赋值到预期结果编辑框。 | | Select from Current | 从最近一次响应中自动获取一个值(或者 ServiceV 虚拟服务所收到的最近一次请求) | 3、使用额外的选项来增强预期结果(本断言中不可用): | 选项 | 描述 | | --- | --- | | Allow Wildcards | 对值的不同部分使用星号通配符(\*)。<br> **提示:** 如果未选中该选项,那么当实际值是动态值时,断言将失败。 | 4、点击 **Test** 按钮,测试断言(实际值的来源为最近一次响应或 ServiceV 虚拟服务中的最近一次请求)。 ## 示例 1、检查 `widget` 元素中是否有 `text` 子元素: ~~~ $.widget.text ~~~ 2、检查 `widget` 元素中是否有任何子元素: ~~~ $.widget.* ~~~ 3、检查 `data` 元素下 `templetList` 数组中 `tid` 子元素值为 5 的数组项(这里为数组的第二项)的 `reward` 元素是否存在: ~~~ { "code" : "200", "message" : "OK", "data" : { "templetList" : [ { "tid" : "3", "name" : "KQJX001", "type" : 0, "reward" : 10.00 }, { "tid" : "5", "name" : "KQJX002", "type" : 1, "reward" : 15.00 } ] } } ~~~ ~~~ $.data.templetList[?(@.tid=='5')].reward ~~~ --- **参考资料** 1、[ReadyAPI Documentation / Testing APIs / Verifying Results / Assertion Reference / Property Content Assertions / JSONPath Existence Match Assertion](https://support.smartbear.com/readyapi/docs/testing/assertions/reference/property/json-exist.html) --- :-: --- 贡献者名单(排名不分先后) --- :-: **材料** :-: **编写** 李云 :-: **校验** :-: **支持**