興味はありつつこれまで触らずにいた Robot Framework に手を出してみようと思い、ついでに知見をまとめてみようと思います。
Robot Framework とは
Robot Framework はオープンソースのテストフレームワークです。決まった書式で作成されたテストケースに従って、自動的にテストを実行してその結果を見やすくまとめてくれます。
私がネットワークやサーバ関連の業務なのでそうそう使うこともないだろうと思っていましたが、リモートログインしたりコマンド実行して結果をチェックしたりなど、インフラの健全性チェックにも使えるなとわかったので、自分でもテストケース書いて試してみようかなと思います。
環境構築
Python 環境
Robot Framework は Python で実装されているので、まずは Python をインストールする必要があります。私は macOS を使っているので、Homebrew でインストールすることにします。この記事を書いている時点では、以下のコマンドで Python 3.14.2 がインストールされました。
$ brew install python3
...
$ which python3
/opt/homebrew/bin/python3
$ python3 -V
Python 3.14.2
検証環境は専用に分離しておきたいので、venv を使います。
$ mkdir ~/robot
$ cd ~/robot
$ python3 -m venv .venv
$ . .venv/bin/activate
Robot Framework のインストール
Robot Framework は Python のパッケージマネージャである pip でインストールできます。この記事を書いた時点では、7.4.1 がインストールされました。
$ pip install robotframework
Collecting robotframework
Using cached robotframework-7.4.1-py3-none-any.whl.metadata (7.6 kB)
Using cached robotframework-7.4.1-py3-none-any.whl (806 kB)
Installing collected packages: robotframework
Successfully installed robotframework-7.4.1
テストライブラリのインストール
Robot Framework には標準で以下のテストライブラリが提供されています。
| BuiltIn | テスト実行における基本的な(そしてよく使う)機能。 例:ログ出力、ループ制御、値の評価 |
| Collections | 辞書、リストなどの操作 |
| DateTime | 日付時刻情報の操作 |
| Dialogs | ユーザーとの対話処理 |
| OperatingSystem | OS 関連 例:ファイルやディレクトリ操作、プログラム実行など |
| Process | プロセスの制御 |
| Screenshot | テストを実行した環境でのスクリーンショット取得 |
| String | 文字列操作、評価 |
| Telnet | Telnet プロトコルによる操作 |
| XML | XML 文書の操作、検証用 |
これ以外の機能を使ったテストを実行したい場合は、適切なテストライブラリをインストールする必要があります。主なものは、公式サイトの Libraries に列挙されています。そのほかにもコミュニティで作成したものが https://github.com/marketsquare にまとめられています。
今回私は SSH 接続や、ルータのコンソールからの制御を試したかったので、SSH Library と SerialLibrary をインストールしました。
$ pip install robotframework-pyserial robotframework-sshlibrary
Visual Studio Code 拡張機能のインストール
環境ができてもテストケースを書くのが辛いとやる気が失せてしまいます。幸い、各種保管機能やテスト実行が気軽にできる Visual Studio Code の拡張機能があるのでこちらをインストールします。
なお、いろいろ似たようなものがありますが、公式ドキュメントに記載があるので Robot Code をインストールすることにします。
これで、検証環境から Visual Studio Code を起動すると、使えるようになっていることが確認できます。
$ code .

今回はここまで。次は簡単なテストを書いてみます。

コメント