Robot Frameworkとは?Pythonのテスト自動化フレームワークの使い方・主要ライブラリを解説
Robot Frameworkは、テストの手順を「キーワード」で記述するオープンソースのテスト自動化フレームワークです。プログラミング未経験のメンバーでも読み書きしやすいプレーンテキスト形式が特徴で、Web・API・モバイルの受け入れテストからCI/CDでの自動実行まで幅広く使えます。本記事では、キーワード駆動テストの仕組みという基本から、pipでのインストール、最初のテスト作成、Browser・SeleniumLibraryなど主要ライブラリの選び方までを、2026年時点の最新版7系(7.4.2)に合わせて解説します。
まとめ:Robot Frameworkの要点
- 正体:Pythonで動くキーワード駆動のテスト自動化フレームワーク。テスト手順を自然言語に近いキーワードで書く。
- 最新版:7.4.2(2026年3月時点)。動作にはPython 3.8以降が必要。ライブラリ側はさらに新しいPythonを要求する場合がある(SeleniumLibrary 6系・Browser 20系はPython 3.10以降)。
- Webテストの選択肢:従来のSeleniumLibraryに加え、PlaywrightベースのBrowserライブラリが有力。待機処理が自動化され、モダンなSPAで安定しやすい。
- RPAとの違い:UiPathのような商用RPAツールとは別物。ただしタスク(Task)記法とrpaframeworkでRPA用途にも転用できる。
- 導入コスト:
pip install robotframeworkの1行で本体が入る。テスト対象に応じてライブラリを追加する。
Robot Frameworkとは:キーワード駆動テストとRPA・他ツールとの違い
Robot Frameworkは2005年にNokia Networksで生まれ、2008年にオープンソース化されたテスト自動化フレームワークです。開発はRobot Framework Foundationが支えており、本体はPythonで実装されています。最大の特徴は、テスト手順をコードではなくキーワードの並びで書く「キーワード駆動テスト」を採用している点にあります。
キーワード駆動テストの仕組み:手順をそのまま文章で書ける
キーワード駆動テストでは、「ページを開く」「文字を入力する」「表示を確認する」といった操作を、あらかじめライブラリが用意したキーワードとして呼び出します。次の例は、ログインページを開いてユーザー名を入力するテストです。プログラムの制御構文がほとんど表に出ないため、テスト仕様書に近い見た目になります。
*** Settings ***
Library Browser
*** Test Cases ***
ログインできること
New Page https://example.com/login
Fill Text id=username testuser
Fill Text id=password secret
Click text=ログイン
Get Text id=welcome == ようこそ
「Fill Text」や「Click」がキーワードです。テスト担当者は操作の意図を日本語のテストケース名で表現し、実際のブラウザ操作はライブラリのキーワードに任せます。この分業により、テストの読みやすさと保守性が高まります。同じキーワードの発想でユニットテストを書くPythonのpytestの使い方・書き方とは設計思想が異なり、Robot Frameworkは受け入れテスト(E2E)寄りです。
RPA・Selenium・Cucumberとの違い:何を選ぶべきか
名前に「Robot」が付くため、GSC上でも「ロボットプロセスの自動化フレームワーク」といったRPA関連の検索で表示されますが、Robot FrameworkはUiPathやPower Automateのような商用RPAツールとは別物です。GUIのドラッグ&ドロップで業務自動化を組むRPA製品と違い、Robot Frameworkはテキストでテストを記述するテスト自動化基盤です。ただしタスク(*** Tasks ***)記法とrpaframeworkライブラリを使えば、RPA用途に転用することもできます。
| 比較対象 | 記述方法 | 主な用途 | Robot Frameworkとの関係 |
|---|---|---|---|
| Selenium(素) | Python等のコード | ブラウザ操作 | SeleniumLibrary経由で内部利用 |
| Cucumber | Gherkin(自然言語) | BDD受け入れテスト | 思想が近い競合。Robotはキーワード駆動 |
| 商用RPA(UiPath等) | GUI | 業務プロセス自動化 | 別カテゴリ。転用は可能だが主目的が違う |
BDDでシナリオを自然言語記述したい場合はCucumberが候補になります。両者の思想は近く、Gherkin記法との比較はCucumberとは?Javaでのテスト自動化とGherkin記法の記事が参考になります。テスト自動化基盤としてはRobot Frameworkのキーワード再利用性が強みです。
対応するテスト対象:Web・API・モバイル・デスクトップ
Robot Framework本体はテストの実行エンジンで、実際に何を操作するかは追加するライブラリで決まります。Webブラウザ(Browser/SeleniumLibrary)、REST API(RequestsLibrary)、モバイルアプリ(AppiumLibrary)、データベース(DatabaseLibrary)など、対象ごとに専用ライブラリを組み合わせます。「java robot framework」で探されることもありますが、本体はPython実装で動きます。Javaアプリを直接テストするのではなく、UIやAPI越しにテストするか、Remoteライブラリインターフェースで外部プロセスと連携する形になります(JVM上で動かすJython実行はRobot Framework 5.0で廃止され、現在はPython 3.8以降のCPythonのみ対応)。
Robot Frameworkのインストール:Python環境からpipまで
導入はpipで完結します。テスト対象に必要なライブラリを追加していく構成です。
前提のPythonバージョンとpipでのインストール手順
最新のRobot Framework 7系はPython 3.8以降で動作します。ただしWebテスト用のSeleniumLibrary 6系やBrowser 20系はPython 3.10以降を要求するため、これから始めるならPython 3.10以上を用意しておくと後で詰まりません。本体のインストールとバージョン確認は次の通りです。
python -m pip install --upgrade pip
pip install robotframework
robot --version
robot --version が Robot Framework 7.4.2 (Python 3.x ...) のように表示されれば導入完了です。「robot framework version」で最新版を確認したい場合は、変動するためpip index versions robotframeworkまたは公式PyPIで確認してください。
仮想環境での分離とライブラリの追加
プロジェクトごとに依存を分けるため、仮想環境(venv)の中にインストールするのが基本です。テスト対象に応じてライブラリを足します。
python -m venv .venv
source .venv/bin/activate
pip install robotframework robotframework-requests
pip install robotframework-browser
rfbrowser init
Browserライブラリはrfbrowser initでPlaywrightのブラウザ本体を追加取得する点が、pipだけで完結する他ライブラリと異なります。この一手間を忘れると実行時にブラウザが見つからずエラーになります。
よくあるインストールエラーと対処
- robotコマンドが見つからない:PATHが通っていない。仮想環境をactivateしたか、
python -m robotで実行しているか確認する。 - ImportError: No module named …:ライブラリ未インストール。
pip listで対象ライブラリが入っているか確認する。 - ライブラリがPythonバージョン非対応:SeleniumLibrary/BrowserはPython 3.10以降が必要。
python --versionで確認し、古ければ新しいPythonの仮想環境を作り直す。
最初のテストを書いて実行する:.robotファイルの基本
Robot Frameworkのテストは拡張子.robotのプレーンテキストで書きます。ここでは構造・実行・変数という最小限の使い方をおさえます。
テストスイート・テストケース・キーワードの構造
1つの.robotファイルが「テストスイート」で、その中に複数の「テストケース」を並べます。共通処理は「ユーザーキーワード」として切り出して再利用します。セクションは*** Settings ***(ライブラリ読み込み)、*** Test Cases ***(テスト本体)、*** Keywords ***(自作キーワード)で区切ります。
*** Settings ***
Library Browser
*** Test Cases ***
トップページが表示される
サイトを開く
Get Title == サンプルサイト
*** Keywords ***
サイトを開く
New Page https://example.com
「サイトを開く」という自作キーワードにブラウザ操作をまとめ、テストケースからは意図だけを呼び出しています。手順が増えるほど、この分離が保守性に効いてきます。
robotコマンドでの実行とオプション
作成した.robotファイルはrobotコマンドで実行します。ディレクトリを指定すれば配下のスイートをまとめて動かせます。
robot tests/login.robot
robot --outputdir results tests/
robot --include smoke tests/
--outputdirで結果ファイルの出力先を、--includeでタグによる絞り込みを指定します。実行後はカレントにreport.html・log.html・output.xmlが生成されます。
変数・セットアップ・ティアダウンの基本
値の再利用には変数を使います。Robot Framework 7で追加されたVAR構文を使うと、テストやキーワードの中で変数を素直に定義できます(従来のSet Variableより読みやすい)。テスト前後の準備・後始末はSuite Setup/Test Teardownで指定します。
*** Settings ***
Library Browser
Suite Setup New Browser chromium headless=True
Suite Teardown Close Browser
*** Test Cases ***
挨拶メッセージを検証
VAR ${expected} ようこそ
New Page https://example.com/home
Get Text id=greeting == ${expected}
主要ライブラリの選び方:Browser・SeleniumLibrary・Requests・Appium
Robot Frameworkの実力はライブラリで決まります。テスト対象別に代表的なものを、選び方の観点とともに整理します。
WebテストはBrowser(Playwright)かSeleniumLibraryか
Webの自動テストには2つの選択肢があります。長く使われてきたSeleniumLibrary(現行6.9系)はSeleniumベースで実績と情報量が豊富です。一方、比較的新しいBrowserライブラリ(現行20系)はMicrosoftのPlaywrightをベースにしており、要素の表示待ちを自動で行う「自動待機」が組み込まれている点が大きな違いです。JavaScriptで動的に描画されるSPAでは、明示的な待機(Wait)を書かずに済むBrowserの方がテストが安定しやすく、新規プロジェクトではBrowserを第一候補にする価値があります。既存のSelenium資産やドライバ構成を活かすならSeleniumLibraryを選びます。SeleniumのGridやServerの構成を検討する場合はSelenium GridとSelenium Serverの違いと適用シナリオが参考になります。
| ライブラリ | 基盤 | 待機処理 | 向いている場面 |
|---|---|---|---|
| Browser | Playwright | 自動待機 | 新規・モダンSPA・安定性重視 |
| SeleniumLibrary | Selenium | 明示的な待機が必要 | 既存Selenium資産・情報量重視 |
RequestsLibraryでのAPIテスト
REST APIのテストにはRequestsLibraryを使います。GET/POSTといったHTTPメソッドをキーワードで呼び、ステータスコードやレスポンスボディを検証できます。UIを介さないぶん高速で、フロントとバックエンドを分けてテストする構成に向きます。pip install robotframework-requestsで導入します。
AppiumLibrary・その他ライブラリ
モバイルアプリ(Android/iOS)のテストにはAppiumLibraryを使い、Appiumサーバー経由で実機・エミュレータを操作します。このほか、テスト前後のデータ準備に使うDatabaseLibrary、サーバー操作のSSHLibrary、Python標準機能を提供するBuiltIn(インストール不要・常時利用可)などがあり、テスト対象に応じて組み合わせます。
CI/CDへの組み込みとレポートの読み方
Robot Frameworkはコマンド1つで実行できるため、CIパイプラインに組み込みやすいのも利点です。
Jenkins等での自動実行
CIツールのジョブでrobotコマンドを実行し、生成されるoutput.xmlをRobot Framework用のプラグイン(Jenkinsの場合はRobot Framework plugin)で取り込むと、ビルドごとに成否とグラフが可視化されます。DockerとJenkinsを組み合わせた実行環境の作り方はDocker上でのJenkins環境構築が参考になります。CIでは--outputdirで結果を成果物ディレクトリに集約し、失敗時のみ通知する運用がよく使われます。
log.html・report.html・output.xmlの役割
実行のたびに3つのファイルが生成されます。役割を分けて使うと結果分析が速くなります。
- report.html:テスト全体の合否サマリー。まず開くファイル。
- log.html:各キーワードの実行ログ。失敗時はここで該当ステップを展開し原因を特定する。
- output.xml:機械可読の生データ。CIプラグインでの集計や、
rebotコマンドでのレポート再生成に使う。
導入・実行時のつまずき:バージョン不一致とlog.htmlでの原因特定
つまずきやすいのは環境とバージョンの不一致です。本体(Python 3.8+)とライブラリ(Python 3.10+のものがある)で要求バージョンが違うため、動かない場合はまずpython --versionとpip listで本体・ライブラリのバージョンを突き合わせます。テスト実行時のエラーはlog.htmlで失敗キーワードを開くのが最短で、スクリーンショットやメッセージがそのまま残ります。旧版から移行する際は、Jython実行やPython 2系がRobot Framework 5.0で廃止されている点、キーワード名や引数仕様が変わっている場合がある点に注意し、公式のリリースノートで差分を確認します。
よくある質問
Robot Frameworkとは何ですか?
テスト手順を「キーワード」の並びで記述する、Pythonベースのオープンソーステスト自動化フレームワークです。プレーンテキストで読みやすく、Web・API・モバイルの受け入れテストやCI/CDでの自動実行に使われます。
Robot FrameworkはJavaで使えますか?
本体はPythonで動作します。かつてはJython経由でJVM上でも動きましたが、その実行方法は廃止されました。Javaアプリを対象にする場合は、UI/API越しにテストするか、Remoteライブラリインターフェースで連携します。
SeleniumLibraryとBrowserライブラリはどちらを使うべきですか?
新規プロジェクトやモダンなSPAでは、自動待機が組み込まれたBrowser(Playwrightベース)が安定しやすくおすすめです。既存のSelenium資産やドライバ構成を活かしたい場合はSeleniumLibraryが適します。
Robot Frameworkの最新バージョンは?
2026年3月時点で7.4.2です。動作にはPython 3.8以降が必要です。バージョンは更新されるため、最新はpip index versions robotframeworkや公式PyPIで確認してください。
Robot FrameworkはRPAツールですか?
主目的はテスト自動化で、UiPathのような商用RPAツールとは別カテゴリです。ただしタスク記法とrpaframeworkライブラリを使えば、RPA用途にも転用できます。