本文介绍了如何为拨测任务指定断言配置。
在云拨测任务中,断言是一组用于验证目标服务或应用程序响应是否符合预期的条件或规则。通过指定断言配置,您可以定义预期的拨测成功结果是什么。每个拨测任务都有其断言配置。只有当断言配置中的所有条件都满足时,拨测请求才被视为成功;否则,拨测请求将被视为失败。
在快捷拨测应用中,目前只有部分拨测任务允许自定义断言配置。详情如下表所示:
任务类型 | 拨测类型 | 是否允许自定义断言配置 |
---|---|---|
多云拨测 | HTTP(S) | ✅ |
自定义拨测 | HTTP(S) | ✅ |
DNS | ❌ | |
Ping | ❌ | |
TCP | ❌ |
HTTP(S) 拨测任务允许基于以下字段来定义断言:
断言类型 | 说明 | 运算符 | 数据类型 | 示例 |
---|---|---|---|---|
HTTP 状态码 | 验证 HTTP 响应状态码是否符合预期。 | 包含、不包含 | 字符串 | 允许指定状态码或状态码区间。例如,包含 200,300-399 ,不包含 404 等。 |
响应头 | 验证原始响应头中指定 key 的值是否符合预期。 | 等于、不等于、包含、不包含、不存在 | 字符串 | Content-Type 等于 application/json |
响应数据 |
| 等于、不等于、包含、不包含、不存在、正则匹配、正则不匹配 | 字符串 | |
下载大小 | 验证响应体字节数(单位:Byte)是否符合预期。 | 等于、不等于、大于、大于等于、小于、小于等于 | 整型 | 大于 1024 |
整体时延 | 验证响应时间(单位:ms)是否符合预期。 | 等于、不等于、大于、大于等于、小于、小于等于 | 整型 | 小于 200 |
JSONPath 是一种用于在 JSON 数据中定位和提取信息的查询语言。它使用类似于 XPath 的语法,通过指定路径来访问 JSON 对象的属性和数组元素。
JSONPath | 说明 |
---|---|
$ | 根对象或元素。 |
@ | 当前对象或元素。 |
. 或 [] | 子元素操作符。 |
.. | 递归匹配所有子元素。 |
* | 通配符,匹配所有对象或元素。 |
[] | 下标运算符,JSONPath 索引从 0 开始。 |
[,] | 连接运算符,将多个结果拼成数组返回。 |
[start:end:step] | 数组切片运算符。 |
?() | 过滤器(脚本)表达式。 |
() | 脚本表达式。 |
例如,给定以下 JSON 数据:
{ "name": "John", "age": 30, "address": { "street": "123 Main St", "city": "New York" }, "phones": [ { "type": "home", "number": "123-456-7890" }, { "type": "work", "number": "987-654-3210" } ] }
通过 JSONPath 可以这样访问数据:
$.name
:访问名为 "name" 的属性。$.address.city
:访问嵌套在 "address" 对象中的 "city" 属性。$.phones[0].number
:访问第一个电话号码的 "number" 属性。XPath 是一种用于在 XML 文档中定位和提取信息的查询语言。它使用路径表达式来描述 XML 文档的结构,类似于文件系统中的路径。XPath 支持在 XML 文档中定位元素、属性、文本和命名空间等内容,提供了丰富的查询功能。
XPath 使用路径表达式来选取 XML 文档中的节点或节点集。
表达式 | 描述 |
---|---|
nodename | 选取此节点的所有子节点。 |
/ | 从根节点选取(取子节点)。 |
// | 从匹配选择的当前节点选择文档中的节点,而不考虑它们的位置(取子孙节点)。 |
. | 选取当前节点。 |
.. | 选取当前节点的父节点。 |
@ | 选取属性。 |
例如,给定以下 XML 数据:
<bookstore> <book category="fiction"> <title lang="en">Harry Potter</title> <author>J.K. Rowling</author> </book> <book category="non-fiction"> <title lang="en">Learning XML</title> <author>Erik T. Ray</author> </book> </bookstore>
通过 XPath 可以这样访问数据:
/bookstore/book[1]/title
:访问第一个书籍的标题。/bookstore/book[@category='non-fiction']/author
:访问类别为 "non-fiction" 的书籍的作者。//title
:访问文档中的所有标题元素。