公開日:
Robot Framework Interactive Consoleで開発作業効率UP!

ご挨拶
ネットワークテクノロジー課の町田です。
新卒2年目のネットワークエンジニアで、ネットワークも開発も全て未経験からこの業界に入りました。ネットワーク検証の自動化に主に携わっており、PythonやRobot Framework(以下RF)を日頃触っています。
本記事では、自動化ツールであるRFのInteractive Consoleについて紹介します。
効率的に開発を進めていくよう日々つとめている中、IPythonの動きに近い形でRFのコードを実行できるInteractive Consoleの便利さに気づき、ぜひ他の人にも知っていただきたいと思い、紹介することになりました。
本記事では、RF Interactive Console の魅力とその使い方について紹介していきます。Robot Frameworkとは何かについて知りたい方は、以下の記事をご覧ください。
Robot Framework Interactive Console とは
Interactive (対話的な) Console (コンソール)ということで、.robotファイルに記述されたTest Case単体の実行や、Settingsセクションのloadなどを実行したりするための 対話型のコンソール環境 です。
このコンソール環境を起き上がらせることで、その環境の中でBuiltInや自作のKeywordを実行して動作確認したり、変数の中身を確認したりなど柔軟な対応が可能となります。
ご挨拶の中でも書いていますが、 python や ipython コマンドで、Interpreterを起動して操作した時とほぼ同様な動きをするのが、RFのInteractive Consoleになります。なので、pythonをお使いの方は同じ感覚で使うだけなので、すぐに慣れるかと思います。
このInteractive Consoleは、RFのためのVSCodeの拡張機能である Robot Framework Language Server がサポートしている機能です。そのため、Interactive Consoleを使いたい場合は、VSCodeと対象の拡張機能をインストールして下さい。詳しくは、こちらをどうぞ。
それでは早速、実際にどんなことができるか見てみましょう!
Interactive Console の簡単な使用例
以下の手順を実行するrobotファイルを例に、Interactive Consoleでできることを紹介していきます。
ネットワーク装置に接続する
接続したネットワーク装置からshow xxxのログを取得する
切断する
Console起動
まずは、Interactive Console を立ち上げるところからです。

VSCodeを開き、赤枠の Load in Interactive Console をクリックすると、右側にConsole環境が表示されます。

Loadしたので、Console環境内の下に以下のSettingsセクションの内容が読み込まれています。
この中にConsole terminalがあり、実行したいKeywordを入力して動作確認する場所となっています。

Run in Interactive Console をクリックしても、同様にConsole環境が表示されます。


さらに、他の立ち上げ方として、 Ctrl+Shift+P (Command+Shift+P)またはF1でコマンドパレットを開いて、
Robot Framework: Start Interactive Console を選択するという方法もあります。


変数のDebug
では、環境が立ち上がったので、色々いじっていきます。
test.robotの中身は以下の通りです。
*** Settings ***
Library NetmikoWrapper
*** Test Cases ***
Log Something
Log Hello, world!
Log To Console message
Connect to a NW device
Connect
... device_type=cisco_ios
... host=172.17.12.51
... alias=csr
... username=cisco
... password=cisco
... secret=cisco
Get log of show running-config
Enable host=csr
${output} = Send Command command_string=show running-config host=csr
Log ${output}
Disconnect the device
Disconnect Allまずは対象装置に対して接続するKeywordを実行してみます。

成功したようなので、次はshow running-configを実行します。

実行は終わって特にErrorは表示されていませんが、 Send Command のKeywordで取得した結果が表示されないですね。
Log ${output} で表示するようにしているのですが、今ここはConsole環境なので、実はLog To Console にしないと結果が出てきません。
なので、結果をconsole terminalで確認してみます。
Keywordを入力している最中に、以下のようにKeywordの候補をリストで出してくれたり、TABキーで補完が効いたりするので便利です。

Log To Console ${output を実行するとshow running-configの結果が見れるようになります。

このようにConsole環境の中で、確認したいときに変数の中を確認することができます。
さらに、BuiltInや自作のKeywordを使って変数の操作も可能なので、「こういう形でログが表示されるようにしたい」となったときその場ですぐに試すこともできます。
なぜそもそもInteractive Consoleを使うのか
なぜInteractive Consoleを使うのかというと、開発効率が劇的に改善するからです。
これを使わないと何が起こるのか、事例を2つ紹介します。
事例① 毎回、動作確認のためにrobotファイルを実行しなければならない
これまで見ていたrobotファイルは、すでに出来上がっているものです。
Test Casesは全部で4つありますが、Interactive Consoleを使わないと以下の開発の仕方になります。
Test Casesを一通り書いた後で、動作確認する
もちろん、1発で成功はしないので、FAILしたところを調べて修正し、再度robotを実行する。
変数の中をLogに出していなかったりすると、「どこで、何が、どうFAILしたのか」がわからなくなる。

上記の開発の進め方になるので時間もかかるし、毎回全てを実行するのはとても非効率です。
Interactive Consoleを使用すると、ボタン 1 クリックでテストケース単位の確認はもちろん、記述しているコード1行1行の実行が可能です。
変数の中身も確認することができるので、便利です。
事例② デバッグ用のタグが散乱する
RFではTest Caseごとにタグをつけることができます。
robotコマンドの引数として実行したいタグを指定すると、そのタグが紐づけられているTest Caseが実行されます。
例 :
![Test Casesの「Log Something」にデバッグ用タグ[Tags] 01を付与した画面](https://storage.googleapis.com/studio-cms-assets/projects/v7qGx6MraL/s-560x350_webp_5b52f176-91fe-4d56-9bf4-b2167bccf8ae.png)

これを使用することで、デバッグしたいTest Caseだけを実行することができます。しかし、デバッグ対象の全てのTest Caseにタグを記述する必要があるうえ、タグの削除忘れによってタグが散乱してしまい、開発のノイズとなる可能性があります。
この場合もInteractive Consoleを使用すれば、タグを付けずとも任意のTest Caseが実行できるため、上記のような悩みは発生しません。
というように、紹介した事例で開発を進めるよりも、効率(スピード)が上がります。
そのため、Interactive Consoleを使うんですね。
おまけ: robotframework-debuglibrary
実は、Interactive Consoleと同様の動きをするライブラリ「robotframework-debuglibrary」があるので、紹介します。
このライブラリではDebugというキーワードが提供されています。
これを使用するとrobotファイルの任意の場所でテストケースの実行を中断させ、Interactive Shellというものを起動することができます。
実際に見てみましょう。
DebugLibraryの導入
※ pip install robotframework-debuglibrary でインストールが必要です。
Settignsセクションに、
Library DebugLibrarを追加ここからDebugをしたいというところに、
DebugKeywordを記述

Interactive Shellに入る
robotコマンドでファイルを実行すると、 Debug を挿入したところで、Interactive Shellに入ります。
そのため、処理が一旦止まっている状態です。

Shellの中で操作する
この中で行う操作としては、Interactive Consoleと変わりないです。

上記のように動作確認したいKeywordを実行することもできますし、Debugともあるように、${output} の中身を自動的に表示してくれています。(Interactive Consoleでも出力を自動的に返してくれます。)
このまま show version のログ結果も出力させたいなとなれば、
Interactive Shell内で動作確認をして、

robotファイルに追加するという流れもできます。
ちなみに、Interactive ConsoleとInteractive Shellは、同時に環境を起こすことはできるので、robotファイルに追加したら、 Run in Interactive Console をクリックして、追加したものを実行することもできます。

Shellに help を入力することで、使用可能なコマンドの一覧が確認できます。

Interactive Shellを終了するには exit コマンドを実行します。終了後はDebugキーワードを起点として、残りのキーワードとTest Caseが実行されていきます。

以上が、robotframework-debuglibraryの Interactive Shell の紹介でした。
基本的にできることは、Interactive Consoleと変わらないですが、違いとしては、
Interactive Shellは、Robot Framework Language Serverの機能ではないので、VSCode以外でも使える。
Interactive Shellの中では、1つのTest Caseを実行できない。Keyword単位で実行することになる。
以上が挙げられるかと思います。
といってもそこまで変わらないので、自分の好きな方を使用するがいいと思います。
まとめ
今回は Robot Frameworkを使った開発に使用すると便利な
Interactive Console
Interactive Shell
という2つの機能を紹介しました。
自分が書いたプログラムを「対話式」で動かしながら開発を進めていくことは、開発効率を高めていくことにつながるかと思いますので、本記事が少しでもお役に立てれば嬉しいです。
Robot Frameworkに関する情報を発信していきますので、今後もよろしくお願いします。
当サイトに掲載されている情報(記事、資料、動画、テンプレート等)については、その正確性および妥当性の確保に努めておりますが、ご利用に際しては、利用者ご自身の責任においてご判断ください。なお、個別の事情に応じては、専門家へのご相談を含め、適切な対応をご検討いただくことを推奨いたします。






























