Robot Framework向けのIDE、RED(Robot Editor)について

この記事は「Robot Framework Advent Calendar 2017 - Qiita」の13日目の記事です。

前回、エディタやIDEのRobot Frameworkプラグインを試してみました。
エディタやIDEのRobot Frameworkプラグインについて - メモ的な思考的な

 
Robot Framework専用のエディタがないかを調べたところ、

がありました。

ただ、RIDEはPython3.x系では動作しないとのことでした*1

Notice that similarly as Robot Framework, RIDE does not yet support Python 3. Notice also that on OS X RIDE requires 32-bit Python version.

https://github.com/robotframework/RIDE/wiki/Installation-Instructions

 
手元の環境がPython3.x系であるため、今回は RED (Robot Editor) を試してみました。

 
目次

 

環境

 
今回はMacにインストールしましたが、WindowsLinuxでも動作するようです。

 

REDのインストール

インストール方法は以下に記載がありました。

 
今回はREDを試すだけなので、一番お手軽なGitHubのzipを利用します。

REDのreleaseページより、環境に合わせて最新版をダウンロードします。
Releases · nokia/RED

Macであれば、 RED_0.8.1.20171123105248-macosx.cocoa.x86_64.zip をダウンロードします。

このzipには、Eclipse + RDE が含まれています。そのため、別途Eclipseをインストールする必要はありません。

もしEclipseが手元にある場合は、RDEだけをインストールすれば良いようです。

 
ダウンロードしたzipを展開した後に開くと、 開発元が未確認のため開けません。 というエラーメッセージが表示されました。

そのため、以下を参考にしてREDを実行しました。
macOS Sierra: 開発元が未確認のアプリケーションを開く

 

プロジェクトの作成

File > New > Robot Project を選択します。project nameは任意の名前をつけます。

 

Robot Frameworkのインストール

REDのワークスペースの中でRobot Frameworkをインストールすると、自動的に認識されます。

デフォルトのワークスペースは以下の通りです。

/path/to/rf_red/Eclipse.app/Contents/MacOS/workspace

 
ターミナルを使って、デフォルトのワークスペースの中で、Robot Frameworkとそのライブラリのインストールを行います。

# Python3の仮想環境を作成
$ python -m venv rfenv363

# 仮想環境を有効化
$ source rfenv363/bin/activate

# とりあえずRobot FrameworkとSeleniumLibraryを入れる
(rfenv363) $ pip install robotframework-selenium
...
Successfully installed robotframework-3.0.2 robotframework-seleniumlibrary-3.0.1 selenium-3.8.0

 
仮想環境のRobot Frameworkが認識されているかを、 環境設定 > Robot Framework > Install Framework にて確認します。ワークスペースの中であれば、自動的に認識されているはずです。

もし存在しなければ、先ほど作成した仮想環境の bin ディレクトリを指定します。

 

補完設定

設定内容

以下を参考に、デフォルトから補完設定を修正します。
Eclipseの補完設定をカスタマイズして爆速コーディング - ser1zw's blog

REDのRobot Framework設定はこんな感じでした。

f:id:thinkAmi:20171211214716p:plain

ただ、Robot Frameworkでは日本語のテストケース名も書けるのですが、自動有効化トリガーとして設定するのが難しいです*2

そのため、 Ctrl + Space というショートカットも併用します。

また、専用IDEだけあり、SeleniumLibrary 3系のキーワードも問題なく補完してくれます。

 

コンテンツ・アシストの様子

日本語のみの場合は、 Ctrl + Space にてこんな感じで補完されます。

f:id:thinkAmi:20171211214416p:plain

 
プレフィックスとして英語を付けていると、自動補完されます。見た目は日本語のみと同じですね。

f:id:thinkAmi:20171211214503p:plain

 
SeleniumLibrary3.x系も自動補完されます。

f:id:thinkAmi:20171211214546p:plain

 

Robot Frameworkのテストケースを作成

IDEの準備ができたため、Robot Frameworkのテストケースを作成します。

上記で作成したmyprojectを右クリック > New > Robot Test Suite にてテストケースファイルを作成します。

f:id:thinkAmi:20171211214750p:plain

 
今回は、こんな感じのテストケースファイルを作成しました。

*** Settings ***
Library    SeleniumLibrary

*** Keywords ***
はろー
    Log To Console    ワールド
        
myはろー
    Log To Console    こんにちわ

*** Test Cases ***
テスト
    はろー
    myはろー
    Log To Console    hello

 

テストの実行

REDのコンソールよりテストを実行してみます。

=============
Myproject
=============
Myproject.Mytest
=============
???    ????
?????
hello
| PASS |
------------------
Myproject.Mytest    | PASS |

テストはパスしたものの、コンソールに出力した日本語が文字化けしてしまいました。

 
Eclipseの事例では、eclipse.ini に追記すると文字化けが解消されるとの記載がありました。
Eclipseのコンソール文字化け解決法。 - Qiita

同じようなファイルを探してみたところ、それっぽいのが以下にありました。

/rf_red/Eclipse.app/Contents/Eclipse/RED.ini

 
ただ、11行目のように記載してREDを再起動しましたが、結果は同じく文字化けしたままでした。

1 -startup
2 ../Eclipse/plugins/org.eclipse.equinox.launcher_1.4.0.v20161219-1356.jar
3 --launcher.library
4 ../Eclipse/plugins/org.eclipse.equinox.launcher.cocoa.macosx.x86_64_1.1.550.v20170928-1359
5 --launcher.appendVmargs
6 -vmargs
7 -Xms512m
8 -Xmx2g
9 -XstartOnFirstThread
10 -Dorg.eclipse.swt.internal.carbon.smallFonts
11 -Dfile.encoding=UTF-8

 
最後のコンソール部分は文字化けしたままですが、Macのターミナルから実行すると問題ないので気にしないことにしました。

 
以上、Robot Framework専用のIDEのREDを使ってみました。Nokiaで使われていることもあり、十分実用的なものでした。

 
ちなみに、メーリングリストには

To create RED we needed a valid business reason to do so. There is a big group of Eclipse users in Nokia who would take advantage in having integrated dev&testing environment. IntelliJ is also considered but we still have a lot to do in RED.

という投稿もありました。IntelliJにも来るといいなー。
https://groups.google.com/d/msg/robotframework-users/c8tNdBVL5WE/kT-uQDROEQAJ

*1:なお、fork先ではexperimental support としてPython3.xで動くようです https://github.com/robotframework/RIDE/issues/1719

*2:プレフィックスとして「test_」などを付けておけば、自動補完は動作しますが...