Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

了解 Python 测试文件中的 Junos 快照管理员

Python 中的 Junos 快照管理员 (jsnapy) 测试文件定义了快照所包含内容的详细信息。测试文件(也称为测试用例)是从 jsnapy 配置文件内部引用的 YAML 格式的文件。配置文件作为 CLI 命令的 jsnapy 参数读取。一般来说,测试文件定义测试用例中包含的测试以及这些测试的特定定义。

了解测试文件的结构

测试文件只有两个部分:tests_include列表和详细信息部分。包含列表中命名的每个测试都有一个详细信息部分。测试文件以包含语句开头: tests_include:。include 语句表示测试用例中包含的测试列表的开头。列表中的每个测试名称前面都有一个短划线 (-);例如, - test_name.您可以根据需要为测试命名任何名称,但测试名称不能包含空格或特殊字符。有效的测试名称包括: check_interfaces_upshow_software_versiontest_bgp_neighbors

注意:

如果测试文件中不存在tests_include列表,但在详细信息部分中定义了测试,则将运行测试文件中详述的所有测试。通过将测试名称从tests_include列表中删除,可以跳过测试文件中特定测试的运行。

详细信息部分以包含列表中的测试名称开头,后跟冒号;例如, check_interfaces_up:.详细信息部分的目的是提供测试用例的所有测试标准,包括:

  • 在设备上执行的 Junos OS CLI 或 RPC 命令(每个测试一个)。这些命令的输出构成了快照的基础。

  • 可扩展标记路径语言 (XPath),用于标识 Junos OS 层次结构中运行测试的起始节点。

  • 测试运算符,帮助分析命令的输出。

  • 由于成功执行测试运算符而返回的信息消息。

  • 由于测试操作员失败而返回的错误消息。

使用 get-config RPC 命令时,可以使用语句 filter_xml: 筛选特定的配置信息。例如,该 filter_xml: configuration/system/login 语句会导致设备过滤掉除 Junos OS /system/login 层次结构中的配置元素之外的所有配置元素。此语句仅适用于特定的 RPC 命令 get-config。有关更多信息,请参阅 示例:在 Python 测试文件中创建 Junos 快照管理员

测试文件的元素

与与 jsnapy 一起使用的其他 YAML 文件一样,测试文件是使用键值对构建的。关键字和值用冒号 (:)) 分隔。

例如 rpc: get-config.

表 1 显示了可在 jsnapy 测试文件中使用的密钥,并描述了每个密钥。

表 1:测试文件关键字和说明

关键 字

描述

tests_include

此关键字表示 jsnapy 测试文件的开头和包含语句的开头。它后面是一个冒号(:)和一个回车符。后面的列表的每个元素都是测试用例的名称,前面有一个空格、一个短划线和另一个空格,并且必须单独位于一行上。例如:

tests_include:
 - show_version
 - check_interface_state
 - return_bgp_neighbors

command

此关键字用于指定 jsnapy 在设备上运行的 Junos OS 命令。它前面有一个空格、一个破折号 (-) 和另一个空格,后面紧跟一个冒号 (:)。例如:

- command: show version

rpc

此关键字用于指定 jsnapy 应在设备上运行的 Junos OS RPC 命令。它前面有一个空格、一个破折号 (-) 和另一个空格,后面紧跟一个冒号 (:)。例如:

- rpc: get-software-version

format

此关键字用于格式化设备输出。可用选项包括: textxml。比较格式化为文本的输出时,仅支持该 --diff 操作。 --check--snapcheck 操作不适用于文本格式的快照。

kwargs

此关键字仅适用于 RPC 命令。如果在测试用例定义中使用该关键字,则会 command 忽略它。关键字用于为发送到设备的命令提供 rpc 参数。例如:

使用get-interface-informationrpc命令时,可以使用类似和media-typeinterface-name参数来提供有关接口的特定信息。

item

此关键字表示测试定义的开始。它前面有一个空格、一个破折号 (-) 和另一个空格,后面紧跟一个冒号 (:)。例如:

- item:

此关键字还指示 jsnapy 仅匹配 .xpath

iterate

此关键字表示测试定义的开始。它前面有一个空格、一个破折号 (-) 和另一个空格,后面紧跟一个冒号 (:)。例如:

- iterate:

此关键字还指示 jsnapy 继续匹配 .xpath

注意:

测试定义可以使用或 iterate item。它们不能一起使用。

xpath

此关键字表示 Junos OS 层次结构中要从中开始测试的路径。它前面有两个空格,后跟一个冒号 (:)。例如:

  xpath:

与此关键字一起使用的值是路径语法值。例如,

/configuration/system/services XPath 选择 Junos OS 层次结构的 [system services] 部分。

id

此关键字表示相对于正在迭代的节点集的 XPATH 表达式,该表达式指定将第一个快照数据项映射到第二个快照数据项的唯一数据元素。关键字后面紧跟冒号 (:)。可以在相同iterateitem XPATH 块下使用单个或多个id关键字。

tests

此关键字表示测试定义的开头。后面跟一个冒号。仅当使用和--snapcheck选项时--check,才会激活测试。使用该--snap选项拍摄快照时,不会执行测试。有关可用测试的详细信息,请参阅 Python 测试运算符摘要中的 Junos 快照管理员

info

此关键字指定在成功完成测试时记录哪些信息(如果 jsnapy 日志记录级别设置为调试)。该信息可以使用从快照文件中提取节点值的 jinja2 格式模板。例如:

info: "Test successful! The admin status of the interface is <{{pre['admin-status']}}>."

err

此关键字指定如果 jsnapy 日志记录级别设置为调试,则测试失败时将记录哪些信息。该信息可以使用从快照文件中提取节点值的 jinja2 格式模板。例如:

err: "Test Failed! The admin-status of the interface is <{{post['admin-status']}}>."

pre

当与信息或错误消息部分中的 jinja2 格式变量一起使用时,此关键字会导致 jsnapy 在更改前快照中搜索命名变量。

post

当与 info-err 消息部分中的 jinja2 格式模板一起使用时,此关键字会导致 jsnapy 在更改后快照中搜索命名变量。