了解 Python 中的 Junos 快照管理员 测试运算符
Python 中的 Junos 快照管理员 (JSNAPy) 允许您捕获和审核 Junos 设备的运行时环境快照。 jsnapy 配置文件定义快照的作用域,并指定用于单个快照或两个快照比较的测试文件。该 --snapcheck 选项拍摄单个快照并评估结果,该 --check 选项比较两个单独快照的结果。在测试文件中,指定要在 Junos 设备上运行的命令、要从中启动的 XPath、可选 ID 值以及要针对命令输出运行的测试。测试用例使用测试运算符来评估单个快照中的数据元素或比较两个单独快照中的数据元素。
Jsnapy 提供了许多关系运算符,用于测试存在、相等、不等式、大小以及包含在特定范围或列表中或排除在特定范围或列表中。特定运算符使用不同的作数类型,包括字符串、数字和 XML 元素。您应该使用与正在执行的检查类型相关的测试运算符来构建测试用例。有关可用运算符的列表,请参阅 Python 测试运算符摘要中的 Junos Snapshot Administrator。
Python 中的 Junos 快照管理员使用一些测试运算符来比较两个单独快照中的元素或元素值。运算符包括: delta、 list-no-less、 list-no-more和 no-diff。使用选项 --check 时,将执行使用这些测试运算符的测试用例。使用特定于单个集合的 --snapcheck 选项时,使用这些测试运算符的测试用例将被有效地忽略。当测试用例被忽略时,Python 中的 Junos Snapshot Administrator 会输出一条消息,如以下示例输出所示:
--------------------------------------------------------------------------- CHECKING SECTION: ospf-checks --------------------------------------------------------------------------- INFO: snapcheck mode: skipping test: list-not-less INFO: snapcheck mode: skipping test: no-diff + TEST PASSED: All OSPF neighbors are up + TEST PASSED: OSPF neighbors must have the same priority value INFO: snapcheck mode: skipping test: no-diff
在比较两个快照的元素值时,为了将第一个快照数据项映射到第二个快照数据项,必须定义创建唯一 ID 的数据元素。若要为测试用例创建唯一 ID,请包含 id 语句后跟引用唯一元素的 XPath 表达式。
下面的示例使用元素的 name 值来标识项。
id: name
若要基于多个元素值创建唯一 ID,请使用下列方法之一:
-
定义 ID 列表。
id: [name, ../peer-address]
-
定义逗号分隔的 ID 字符串。
id: name, ../peer-address
您还可以使用相应的 XPath 表达式构造相对于内容值的 ID 值。例如:
id: connection-id, ../local-site-id, ancestor::instance/instance-name