[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)
---
:-: --- 贡献者名单(排名不分先后) ---
:-: **材料**
:-: **编写**
李云
:-: **校验**
:-: **支持**
- 基础知识
- 属性
- 属性分类
- 属性扩展
- Get Data 对话框
- 断言
- 关于断言
- 使用断言
- 断言类型
- Response SLA
- Script
- Property Content Assertions
- Contains
- Equals
- Equals Binary
- JSONPath Count
- JSONPath Existence Match
- JSONPath Match
- JSONPath RegEx Match
- Message Content
- Not Contains
- XPath Match
- XQuery Match
- Compliance Assertions
- Swagger Compliance
- Schema Compliance
- HTTP Header Exists
- HTTP Header Equals
- JDBC Assertions
- 复制断言
- 术语
- 脚本
- 关于脚本
- 脚本编辑器
- JSONPath
- Projects
- SoapUI
- 测试步骤
- Groovy Script
- DataSource
- Conditional GoTo
- REST Request
- ReadyAPI
- 环境
- 关于环境
- 创建环境
- Rest Services
- Custom Properties
- JDBC Connections
- 团队协作
- 集成
- GitLab
- 第三方库
- Groovy 库
- Java 库
- 自定义ReadyAPI
- 首选项
- 全局属性
- ReadyAPI
- Code Templates
- JVM 设置
- 修改
- 实战指导
- 项目属性
- Groovy
- 代码片段
- 开发规范 v0.1
- 属性
- inbox
- FAQ
- 安装配置
- 复合工程
- 修改文件夹或文件名称