Posted at

Robot Frameworkのデモアプリを動かす


Robot Frameworkとは?

Robot Framework とは、Python製のブラウザオートメーションツールです。

自然言語に近い形式でスクリプトを記述できるのが特徴で、受け入れテストの自動化や、RPAのように定型業務を自動化することを想定しています。

公式サイトはそこそこ情報量が多いのですが、クイックスタートというか「この手順どおりやればとりあえず試せるよ」みたいなのが少なかったので、デモ用のWebアプリケーションを動かして、それをテストするところまでの手順をまとめてみました。


環境


  • Ubuntu 19.04


    • OS依存の部分はあんまりないと思うのでたぶんWinでもMacでも動くと思います



  • Python 3.7.4


インストール

pipがインストールされていることが前提です。


$ pip install robotframework

インストールが成功すると、 robot コマンドが利用できるようになります。


動かす

公式が用意してくれている デモアプリケーション を利用します。


clone~デモアプリ起動まで


$ git clone git@github.com:robotframework/WebDemo.git
$ cd WebDemo
$ python demoapp/server.py

成功すると、 http://localhost:7272 を開くとログイン画面が表示されます。

デモアプリを終了したいときは Ctrl+C


テスト実行

別のターミナルを開き、下記を実行します。


$ robot login_tests/

ブラウザが自動で動き、テスト結果がターミナルに流れてきます。

==============================================================================

Login Tests
==============================================================================
Login Tests.Gherkin Login :: A test suite with a single Gherkin style test.
==============================================================================
Valid Login Valid Login | PASS |
------------------------------------------------------------------------------
Login Tests.Gherkin Login :: A test suite with a single Gherkin st... | PASS |
1 critical test, 1 passed, 0 failed
1 test total, 1 passed, 0 failed

(略)

8 critical tests, 8 passed, 0 failed
8 tests total, 8 passed, 0 failed
==============================================================================
Output: /home/tsuemura/WebDemo/output.xml
Log: /home/tsuemura/WebDemo/log.html
Report: /home/tsuemura/WebDemo/report.html

report.html を開くと、なんか古臭…………シンプルで見やすい感じのレポートが生成されています。


(おまけ)トラブルシューティング

主にVMやクラウドサーバなどで動かしている場合向けのハマりどころ。

たぶん普通はハマらないポイントのはずなので読み飛ばしていいはず


デモアプリを違うサーバで動かしたい

デモアプリケーションでは、以下のように localhost からのアクセスにのみ制限されています。

demoapp/server.py 内の、'localhost' と書かれたところを '' に置き換えると、異なるサーバからもアクセスすることができます。


demoapp/server.py


class DemoServer(ThreadingMixIn, HTTPServer):
allow_reuse_address = True

def __init__(self, port=PORT):
HTTPServer.__init__(self, ('localhost', int(port)), # <<< ここの 'localhost' を空欄にする
SimpleHTTPRequestHandler)



Selenium Serverを違うサーバで動かしたい

Robot Frameworkを実行するマシンとは別のマシンでSeleniumを動かす場合、Open Browser の引数を追加する必要があります。

login_tests/resource.robot を以下のように編集してください。


login_tests/resource.robot


Open Browser To Login Page
Open Browser ${LOGIN URL} ${BROWSER} None http://{Selenium ServerのIP}:4444/wd/hub

引数のリストは Selenium Libraryのkeyword documentation に記載されています。