Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

Python テスト ファイルでの Junos スナップショット アドミニストレータについて

Python(jsnapy)テストファイルのJunosスナップショットアドミニストレータは、スナップショットに含まれる内容の詳細を定義します。テストファイルは、テストケースとも呼ばれ、jsnapy構成ファイル内から参照されるYAML形式のファイルです。コンフィギュレーション・ファイルは、CLI コマンドの引数として読み取られます jsnapy 。一般に、テストファイルは、テストケースに含まれるテストと、それらのテストの特定の定義を定義します。

テスト ファイルの構造について

テスト ファイルには、tests_include リストと詳細セクションの 2 つのセクションしかありません。インクルードリストに名前が付けられた各テストの詳細セクションがあります。テスト ファイルは、include ステートメントで始まります。 tests_include:include ステートメントは、テスト ケースに含まれるテストの一覧の先頭を示します。リスト内の各テスト名の前にはダッシュ (-) が付きます。たとえば、 - test_name.テスト名にスペースや特殊文字を含めることはできませんが、テストには好きな名前を付けることができます。有効なテスト名には、 check_interfaces_up、 、 show_software_versionまたは test_bgp_neighborsが含まれます。

メモ:

tests_include リストがテスト ファイルに存在しないが、詳細セクションで定義されているテストがある場合は、テスト ファイル内で詳細に説明されているすべてのテストが実行されます。テスト ファイル内の特定のテストの実行をスキップするには、テスト名を tests_include リストから外します。

詳細セクションは、インクルード リストからのテストの名前で始まり、その後にコロンが続きます。たとえば、 check_interfaces_up:.詳細セクションの目的は、次のようなテスト ケースのすべてのテスト条件を提供することです。

  • デバイス上で実行される Junos OS CLI または RPC コマンド(テストごとに 1 つ)。これらのコマンドの出力は、スナップショットの基礎となります。

  • テストの実行元のJunos OS階層内の開始ノードを識別する拡張マークアップパス言語(XPath)。

  • コマンドからの出力の分析に役立つテスト演算子。

  • テスト演算子が正常に実行された結果として返される情報メッセージ。

  • テスト演算子の失敗の結果として返されるエラー メッセージ。

RPC コマンドを使用する場合 get-config 、 ステートメントを使用して 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サポートされます。および --snapcheck の操作は--check、テキスト形式のスナップショットでは機能しません。

kwargs

このキーワードは、RPC コマンドでのみ機能します。キーワードがテスト・ケース定義で使用されている場合 command は無視されます。キーワードは、デバイスに送信されるコマンドに rpc 引数を提供するために使用されます。例えば:

コマンドを使用する場合get-interface-informationrpc、 や media-type のようなinterface-name引数を使用して、インターフェイスに関する特定の情報を提供できます。

item

このキーワードは、テスト定義の開始を示します。先頭にはスペース、ダッシュ (-)、および別のスペースが続き、その直後にコロン (:)) が続きます。例えば:

- item:

また、このキーワードは、 の最初のノード xpathのみを一致させるように jsnapy に指示します。

iterate

このキーワードは、テスト定義の開始を示します。先頭にはスペース、ダッシュ (-)、および別のスペースが続き、その直後にコロン (:)) が続きます。例えば:

- iterate:

また、このキーワードは、 内のすべてのノード xpathに一致し続けるように jsnapy に指示します。

メモ:

テスト定義では、 または iterate itemのいずれかを使用できます。一緒に使用することはできません。

xpath

このキーワードは、テストを開始するJunos OS階層内のパスを示します。先頭に 2 つのスペースが続き、その後にコロン (:)。例えば:

  xpath:

このキーワードで使用される値は、パス構文値です。例えば

XPath は /configuration/system/services 、Junos OS 階層の [system services] 部分を選択します。

id

このキーワードは、反復処理されるノード・セットを基準とした XPATH 式を示し、最初のスナップショット・データ項目を 2 番目のスナップショット・データ項目にマップする固有のデータ・エレメントを指定します。キーワードの直後にはコロン (:)。同じiterateキーワードまたは item XPATH ブロックの下で単一または複数のidキーワードを使用することができます。

tests

このキーワードは、テスト定義の開始を示します。その後にコロンが続きます。テストは、 --check および --snapcheck オプションが使用されている場合にのみアクティブになります。オプションを使用して --snap スナップショットを作成する場合、テストは実行されません。使用可能なテストの詳細については、 Python テスト演算子の概要の Junos Snapshot Administrator を参照してください。

info

このキーワードは、jsnapy ロギング・レベルが debug に設定されている場合に、テストが正常に完了したときにログに記録される情報を指定します。この情報では、スナップショット ファイルからノード値を取得する jinja2 形式のテンプレートを使用できます。例えば:

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

err

このキーワードは、jsnapy ロギング・レベルが debug に設定されている場合に、テストの失敗時にログに記録される情報を指定します。この情報では、スナップショット ファイルからノード値を取得する jinja2 形式のテンプレートを使用できます。例えば:

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

pre

info セクションまたは err メッセージ セクションで jinja2 形式の変数と共に使用すると、このキーワードにより、jsnapy は変更前のスナップショット内で名前付き変数を検索します。

post

info セクションまたは err メッセージ セクションで jinja2 形式のテンプレートと共に使用すると、このキーワードにより、jsnapy は変更後のスナップショット内で名前付き変数を検索します。