You need to enable JavaScript to run this app.
导航
断言配置
最近更新时间:2024.05.29 11:22:10首次发布时间:2024.05.29 11:22:10

本文介绍了如何为拨测任务指定断言配置。

什么是断言

在云拨测任务中,断言是一组用于验证目标服务或应用程序响应是否符合预期的条件或规则。通过指定断言配置,您可以定义预期的拨测成功结果是什么。每个拨测任务都有其断言配置。只有当断言配置中的所有条件都满足时,拨测请求才被视为成功;否则,拨测请求将被视为失败。

使用限制

在快捷拨测应用中,目前只有部分拨测任务允许自定义断言配置。详情如下表所示:

任务类型拨测类型是否允许自定义断言配置
多云拨测HTTP(S)
自定义拨测HTTP(S)
DNS
Ping
TCP

支持的断言类型

HTTP(S) 拨测任务允许基于以下字段来定义断言:

断言类型说明运算符数据类型示例
HTTP 状态码验证 HTTP 响应状态码是否符合预期。包含、不包含字符串允许指定状态码或状态码区间。例如,包含 200,300-399不包含 404 等。
响应头验证原始响应头中指定 key 的值是否符合预期。等于、不等于、包含、不包含、不存在字符串Content-Type 等于 application/json

响应数据

  • 验证指定长度的原始响应内容(允许 JSONPath 和 XPath)是否符合预期。
  • 验证原始响应内容的 MD5、SHA1、SHA256 值是否符合预期。

等于、不等于、包含、不包含、不存在、正则匹配、正则不匹配

字符串

参见 JSONPathXPath

下载大小验证响应体字节数(单位:Byte)是否符合预期。等于、不等于、大于、大于等于、小于、小于等于整型大于 1024
整体时延验证响应时间(单位:ms)是否符合预期。等于、不等于、大于、大于等于、小于、小于等于整型小于 200

断言配置说明

JSONPath

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

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:访问文档中的所有标题元素。