38 人が閲覧(直近 30 日) テスト

Robot Frameworkとは?Pythonのテスト自動化の使い方と主要ライブラリ【7.5対応】

Robot Frameworkとは?Pythonのテスト自動化の使い方と主要ライブラリ【7.5対応】

Robot Frameworkは、テストの手順を「キーワード」の並びで書くPython製のオープンソースのテスト自動化フレームワークです。Web・API・モバイルの受け入れテストや、RPA的な定型作業の自動化に使われます。この記事では、2026年9月14日に公開された最新版7.5を前提に、インストールから.robotファイルの書き方、主要ライブラリの選び方、CIでの実行までを説明します。.robotファイルとコマンドの例は、GitHub Actionsの設定例を除き、Robot Framework 7.5とPython 3.12の環境で実行して結果を確かめたものです。

まとめ:Robot Framework 7.5の要点

  • 正体:Pythonで動くキーワード駆動のテスト自動化フレームワーク。ライセンスはApache License 2.0で、開発は非営利のRobot Framework Foundationが支えている。
  • 最新版:7.5(2026年9月14日公開)。Python 3.8以降で動き、7.5でPython 3.15への対応が明記された。
  • インストール:pip install robotframework のあと robot --version で確認する。テスト対象に応じてライブラリを追加する。
  • Webテスト:新規ならPlaywrightベースのBrowserライブラリ(20.6.0)。既存のSelenium資産があればSeleniumLibrary(6.9.0)。
  • 古い解説に注意:検索上位の日本語訳ドキュメントは3.0系(2015年)のままで、そこにある :FOR 構文は7.5ではエラーになる。
  • RPAとの関係:UiPathのような画面録画型のRPA製品ではない。*** Tasks *** で書けばテスト以外の自動化にも使える。

Robot Frameworkとは:Python製のキーワード駆動テスト自動化フレームワーク

Robot Frameworkは、受け入れテストやATDD(受け入れテスト駆動開発)向けに作られた汎用の自動化フレームワークです。本体はテストデータを読んで実行し、ログとレポートを作る役割だけを持ちます。ブラウザやAPIを実際に操作するのは、本体に組み込む「ライブラリ」です。このため対象がWebでもAPIでも、同じ書き方と同じレポートでテストをまとめられます。

キーワード駆動テストの書き方:自作キーワードと組み込みキーワードの並び

テストケースは、ライブラリが用意したキーワード(Should Be Equal など)と、自分で定義したキーワードを1行ずつ並べて書きます。区切りは2つ以上の空白です。次の例では、Build Greeting というキーワードを自作し、テストケースから呼び出しています。

*** Settings ***
Documentation     文字列操作を確かめる最小のテストスイート
Library           String
Test Setup        Log    テスト開始
Test Teardown     Log    テスト終了

*** Variables ***
${GREETING}       Hello

*** Test Cases ***
挨拶文を組み立てられる
    [Tags]    smoke
    ${message}=    Build Greeting    Robot
    Should Be Equal    ${message}    Hello, Robot!

大文字に変換できる
    [Tags]    regression
    ${upper}=    Convert To Upper Case    robot
    Should Be Equal    ${upper}    ROBOT

*** Keywords ***
Build Greeting
    [Arguments]    ${name}
    RETURN    ${GREETING}, ${name}!

テストケース名や自作キーワード名は日本語でも書けるため、テスト仕様書の手順をそのままキーワード名にできます。

RPAツールとの違いとタスクでの自動化

名前に「Robot」が入るため、ロボットによる業務自動化(RPA)の製品と混同されがちです。UiPathのような商用RPAは画面操作の録画やワークフロー設計の画面を中心にした製品ですが、Robot Frameworkはテキストファイルに手順を書き、コマンドで実行するフレームワークです。

ただし、テスト以外の自動化にも使えます。公式ユーザーガイドによると、*** Test Cases *** の代わりに *** Tasks *** で書いたファイルは汎用自動化モード(RPAモード)で実行され、--rpa オプションで明示もできます。次のタスクは、7.5で実行すると結果が「1 task, 1 passed, 0 failed」と表示されました。

*** Settings ***
Library    OperatingSystem

*** Tasks ***
レポート用フォルダを用意する
    Create Directory    ${OUTPUT DIR}${/}work
    Directory Should Exist    ${OUTPUT DIR}${/}work

画面録画や管理コンソールが欲しい場合は、オープンソースのRPA製品を選ぶ方が要件に合います。比較の候補はOpenRPAとは?無料オープンソースRPAのインストール・使い方・対応OS【2026年】にまとめています。

Selenium・pytest・Cucumberとの役割の違い

SeleniumやPlaywrightはブラウザを操作する部品で、Robot Frameworkはその部品をライブラリとして呼び出す側です。

ツール 位置づけ テストの書き方 向く場面
Robot Framework 実行フレームワーク キーワードの表形式 受け入れテスト・E2E
Selenium/Playwright ブラウザ操作の部品 各言語のコード ブラウザ自動操作
pytest Pythonのテストランナー Pythonの関数 単体・結合テスト
Cucumber BDDフレームワーク Gherkin(Given/When/Then) 仕様を文章で共有

開発者が単体テストを書くならPythonの関数で書けるpytestの使い方と書き方|fixture・parametrize・docstringの扱いまで【9.1対応】の方が速く、Given/When/Thenの文章で仕様を合意したいならGherkinとは?構文の全キーワードと.featureファイルの書き方・実行例が合います。Robot Frameworkが強いのは、テスト担当者と開発者が同じファイルを読み書きし、Web・APIをまとめて1つのレポートに出したい場面です。

Robot Frameworkのインストール:Python 3.10以降の推奨

本体はPyPIで配布されています。PyPIのrobotframeworkのページで確認できる最新版は7.5で、必要なPythonは3.8以降です。ただしWeb系の主要ライブラリ(Browser・SeleniumLibrary)とRobocopはPython 3.10以降が必要です。これから入れるならPython 3.10以降を選んでください。

仮想環境とpipでの導入手順

プロジェクトごとに仮想環境を分けておくと、ライブラリの版がほかの環境とぶつかりません。macOS・Linuxでは次の手順です(Windowsは .venv\Scripts\activate で有効化します)。

python3 -m venv .venv
source .venv/bin/activate
pip install robotframework
robot --version

手元では Robot Framework 7.5 (Python 3.12.13 on darwin) と表示されました。robot コマンドが見つからない場合は、仮想環境の有効化を忘れているか、PythonのScriptsフォルダにPATHが通っていません。python -m robot --version でも同じ確認ができます。

なお、JavaやJython上で動かす方法は使えません。5.0のリリースノートでPython 3.6以降が必須になり、JythonとIronPythonの対応は終わりました。Javaのコードを呼びたい場合は、Java側にRemoteライブラリのサーバーを立てて呼び出します。

エディタとGUI:RobotCodeとRIDE

.robotファイルはテキストなので、どのエディタでも書けます。VS CodeやJetBrains系では、補完・定義ジャンプ・実行ボタンを追加する拡張機能 RobotCode があります。表形式の画面でテストを編集したい場合は、公式のGUIエディタRIDE(PyPIのrobotframework-ride、2026年10月時点の最新は7月公開の2.2.4)もあります。書式の検査と整形は、Robotidyが統合された Robocop の robocop check と robocop format で行えます。

最初のテスト実行と3つの結果ファイル

Robot Frameworkのファイルで主に使うセクションは、*** Settings ***(ライブラリの読み込み・セットアップ)、*** Variables ***(変数)、*** Test Cases ***(テスト本体)、*** Keywords ***(自作キーワード)の4つです(ほかにTasksとCommentsがあります)。冒頭の例を tests/greeting.robot として保存し、次のコマンドで実行します。

robot --outputdir results tests

フォルダを指定すると、フォルダが親スイート、中の各.robotファイルが子スイートとして実行されます。終わると results フォルダに3つのファイルができます。

ファイル 中身 使いどころ
report.html 成否の集計 全体の結果を見る
log.html キーワード単位の実行記録 失敗原因を追う
output.xml 機械可読の結果 再実行・統合・CI連携

失敗したときは、log.htmlで赤くなったキーワードを開くと、引数と失敗メッセージ(期待値okに対して実際がngなら ng != ok)が並びます。

robotコマンドの主要オプション

よく使うのは次の5つです。オプションの一覧は robot --help で確認できます。

オプション 働き 例
--include タグが一致するテストだけ実行 --include smoke
--exclude タグが一致するテストを除外 --exclude slow
--variable 変数を外から渡す --variable ENV:stg
--outputdir 結果ファイルの出力先 --outputdir results
--dryrun 実行せず構文とキーワードの有無を確認 --dryrun

冒頭の例に --include smoke を付けると、[Tags] smoke を持つ「挨拶文を組み立てられる」だけが実行されました。

失敗テストの再実行とrebotでの結果統合

不安定なE2Eテストでは、失敗分だけを再実行し、結果を1つにまとめる運用がよく使われます。--rerunfailed に前回のoutput.xmlを渡すと失敗したテストだけが選ばれ、付属の rebot コマンドの --merge で2回分の結果を統合できます。

robot --outputdir r tests/fail.robot
robot --rerunfailed r/output.xml --output rerun.xml --outputdir r tests/fail.robot
rebot --merge --outputdir r --output merged.xml r/output.xml r/rerun.xml

2件中1件が失敗するファイルで実行すると、1回目は「2 tests, 1 passed, 1 failed」、再実行では失敗した1件だけが走ります。統合後のmerged.xmlでは、再実行で成功したテストは成功に置き換わり、再実行でも失敗したテストは失敗のまま残る仕組みです。robot の終了コードは失敗したテストの数(250件以上は250)で、CIはこれが0以外なら失敗と判定します。

7系で変わった書き方:日本語訳ドキュメント(3.0系)との違い

「robotframework」の検索で上位に出る RobotFramework和訳・日本語ドキュメント集 は、表示されている版が 3.0.1.dev20151231 です。基本の考え方は今も通用しますが、構文は2015年当時のままで、「高度な機能」の「for ループ」節にある :FOR の書き方は現行版では動きません。7.5で旧構文を実行した結果は次のとおりです。

旧い書き方 7.5での結果 現行の書き方 導入版
:FOR と \ の継続行 エラーで失敗 FOR … END 3.1(旧構文は4.0で削除)
[Return] 動くが非推奨の警告 RETURN 5.0
Run Keyword If 動く IF … END 4.0
Set Test Variable 動く VAR 7.0

:FOR を使ったテストは「Support for the old FOR loop syntax has been removed.」というメッセージで失敗します。4.0のリリースノートで旧構文の削除が告知されています。古いサンプルを写すときは、まずここを書き換えます。

VAR・GROUPによる変数作成と処理のまとまり

7.0で入った VAR は、テストの途中で変数を作る構文です。@{} でリスト、&{} で辞書を作れ、scope=SUITE のようにスコープも指定できます。7.2で入った GROUP は、複数の手順に名前を付けてまとめる構文で、output.xmlとlog.htmlにはその名前のまとまりとして記録されます。7.5のテストのメタデータ([Metadata])と合わせて、次のファイルで動作を確かめました。

*** Test Cases ***
VARとGROUPとメタデータ
    [Metadata]    Issue    4409
    VAR    ${base}    https://example.com
    VAR    @{paths}    /login    /logout
    GROUP    URLを組み立てる
        FOR    ${p}    IN    @{paths}
            Log    ${base}${p}
        END
    END
    Should Be Equal    ${base}/login    https://example.com${paths}[0]

7.4のSecret変数と7.5のMarkdown埋め込み

7.4(2025年12月12日公開)では、値をログに出さない Secret 型の変数が入りました。データの中では値を環境変数か別のSecret変数から作る決まりで(コマンドラインの --variable でも作れます)、ファイルに値を直書きすると Value must have type 'Secret', got string. というエラーになります。

*** Variables ***
${PASSWORD: Secret}    %{APP_PASSWORD}

*** Test Cases ***
秘密の値はログに出ない
    Log    ${PASSWORD}

環境変数 APP_PASSWORD を渡して実行すると、log.htmlには値の代わりに <secret> と記録されました。ただし公式も注意しているとおり、これは暗号化ではありません。${PASSWORD.value} で中身を参照すれば、その行のログには値が出ます。

7.5のリリースノートにある主な新機能の1つは、Markdownファイルの robotframework コードブロックをテストとして実行できるようになった点です。拡張子を .robot.md にしたファイルは、フォルダ実行時にも自動で読み込まれます。

# 手順書

この文章は実行されません。

```robotframework
*** Test Cases ***
Markdownの中のテスト
    Should Be Equal As Integers    ${1 + 1}    2
```

このほか7.5では、組み込みのTestdocツールが非推奨になり、外部のrobotframework-testdocを使うよう案内されています。Telnetライブラリも非推奨で、今後は外部ライブラリに置き換わる予定です。Telnetでネットワーク機器を操作しているスイートは、移行先を確認しておく必要があります。

主要ライブラリの選び方

本体には11個の標準ライブラリが同梱されています。BuiltIn(自動で読み込まれる基本キーワード)、Collections、DateTime、Dialogs、OperatingSystem、Process、Remote、Screenshot、String、Telnet、XMLです。それ以外は公式サイトのライブラリ一覧から、テスト対象に合わせて追加します。

Webテスト:BrowserライブラリとSeleniumLibrary

Webテストのライブラリは2つあり、新規に始めるならBrowserライブラリを勧めます。BrowserはPlaywrightを裏で動かし、要素の出現を待つ処理と、期待値が一致するまでの再試行を自動で行います。SeleniumLibraryはSelenium WebDriverを使い、待機は Wait Until Element Is Visible などで自分で書く場面が多くなります。

項目 Browser SeleniumLibrary
最新版 20.6.0(2026-10-03) 6.9.0(2026-05-17)
裏側の技術 Playwright Selenium 4.25.0以降
Python 3.10以降 3.10以降
追加で必要なもの Node.js 22・24([bb]版は不要) ブラウザ本体
待機 自動(再試行は既定1秒) 明示的に書く

BrowserライブラリのREADMEの手順では、pipで入れたあと rfbrowser init でNode.jsの依存とブラウザを入れます。既定ではChromium・Firefox・WebKitの3つが入り、READMEには通常700MB以上と書かれています。Chromiumだけでよければ rfbrowser init chromium と指定できます。Node.jsを入れたくない環境向けには、pip install robotframework-browser[bb] と rfbrowser install で済む方法もあります。

pip install robotframework-browser
rfbrowser init chromium

Get Text に期待値を渡すと、一致するまで再試行します。ただし再試行は既定で1秒(retry_assertions_for)までで、ボタンを押して0.8秒後に文字が出るページは成功し、1.8秒後のページは失敗しました。次の例のように retry_assertions_for=3s を指定すると、1.8秒のページでも成功します。パスワードは7.4のSecret型の変数で Fill Secret に渡すのが推奨の書き方で、output.xmlに値は残りません(Playwrightのデバッグログには平文で出ます)。

*** Settings ***
Library           Browser    retry_assertions_for=3s
Suite Setup       New Browser    chromium    headless=True
Suite Teardown    Close Browser

*** Variables ***
${PASSWORD: Secret}    %{APP_PASSWORD}

*** Test Cases ***
ログインするとメッセージが出る
    New Page    http://127.0.0.1:18766/index.html
    Fill Text    id=user    taro
    Fill Secret    id=pass    ${PASSWORD}
    Click    id=login
    Get Text    id=msg    ==    ようこそ taro

Seleniumで組んだテストやSelenium Gridの環境が既にあるなら、SeleniumLibraryを続ける方が移行の手間がかかりません。両者の仕組みの違いはSeleniumとは?WebDriverの仕組みと4系の実行手順・ツール選定を解説とPlaywright(プレイライト)とは?仕組み・できること・Seleniumとの違いを解説で説明しています。

APIテスト:RequestsLibrary

REST APIのテストには、Pythonのrequestsを包んだRequestsLibraryを使います。PyPIの安定版は0.9.7(2024年4月公開)で、1.0系はプレリリースのままです。Create Session で接続先を決め、GET On Session や POST On Session で呼び出します。expected_status を指定しない場合、4xx・5xxの応答はその場で失敗になります。

*** Settings ***
Library           RequestsLibrary
Suite Setup       Create Session    api    http://127.0.0.1:18765
Suite Teardown    Delete All Sessions

*** Test Cases ***
ユーザーを1件取得できる
    ${resp}=    GET On Session    api    /users/1
    Should Be Equal As Strings    ${resp.json()}[name]    Taro

ユーザーを登録できる
    &{body}=    Create Dictionary    name=Hanako
    ${resp}=    POST On Session    api    /users    json=${body}    expected_status=201
    Should Be Equal As Integers    ${resp.json()}[id]    2

存在しないユーザーは404になる
    GET On Session    api    /users/999    expected_status=404

手元に立てた検証用のAPIサーバーに対して、3件とも成功しました。画面を伴わないAPIの確認だけなら、GUIで組めるPostmanとは?APIテスト自動化とNewmanでのCI組み込みまで実装手順で解説の方が手早い場合もあります。WebとAPIを同じスイートで流したいときにRobot Frameworkを選びます。

モバイル・DB・SSHのライブラリと保守状況

モバイルアプリはAppiumLibrary(3.2.1)でAppiumサーバー経由で操作します。Appium側の現状はAppium Desktopは終了|Appium 3時代のInspector移行とモバイルテスト自動化を参照してください。データベースの値の確認にはDatabaseLibrary(2.5.0)、サーバーへのSSH操作にはSSHLibraryがあります。SSHLibraryはPyPIの最新が3.8.0(2021年11月)で更新が止まっているため、新しいPythonで動くかは導入前に確かめてください。

CI/CDでの自動実行:GitHub ActionsとJenkins

CIで回すときは、終了コード(失敗数)で合否を判定し、log.htmlとreport.htmlを成果物として保存します。GitHub Actionsなら次の設定が最小構成です。if: always() を付けておくと、テストが失敗した回でもレポートが残ります。

name: robot-tests
on: [push, pull_request]
jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v7
      - uses: actions/setup-python@v7
        with:
          python-version: "3.12"
      - run: pip install robotframework robotframework-requests
      - run: robot --outputdir results tests
      - uses: actions/upload-artifact@v7
        if: always()
        with:
          name: robot-results
          path: results

Jenkinsでは、Robot Frameworkプラグイン(2026年10月時点の最新は9月公開の6.3.0)を入れると、output.xmlを読んでビルドごとの成否の推移とログをJenkinsの画面に表示できます。テストの層をどう分けてCIに載せるかは、テストピラミッドとは?単体・結合・E2Eの配分と実装者向けテスト戦略設計で扱っています。CIの仕組みづくりから相談したい場合は、DevOps・CI/CD導入支援でもお手伝いしています。

Robot Frameworkを選ばない方がよい場面

キーワード駆動は、テストを読む人が多いほど効きます。逆に、次の条件では別の道具の方が合います。

  • 開発者だけがテストを書く:TypeScriptのフロントエンドで、テストも開発者が書くなら、Playwright Testを直接使う方がデバッグも型補完も素直です。キーワードの層は翻訳の手間になります。
  • 単体テストが中心:関数単位のテストはpytestなど言語ごとのテストランナーで書きます。Robot Frameworkは何もしないテスト1,000件でも実行に約8秒かかり、結果ファイルも毎回生成されるため、数千件の単体テストには向きません。
  • キーワードを整備する人がいない:自作キーワードの命名と共通化を誰も見ないと、似たキーワードが増えて保守が破綻します。導入時にキーワードの置き場所(resourceファイル)と命名の決まりを1人が持つ体制を作ってください。

よくある質問

Robot Frameworkとは何ですか?

テストの手順をキーワードの並びで書く、Python製のオープンソースのテスト自動化フレームワークです。ブラウザやAPIの操作はライブラリが担い、本体は実行とログ・レポートの生成を受け持ちます。

Robot Frameworkの最新バージョンはいくつですか?

2026年10月時点の最新版は7.5(2026年9月14日公開)です。Python 3.8以降で動きます。最新の版はPyPIのrobotframeworkのページで確認できます。

Robot FrameworkはJavaで使えますか?

Java上(Jython)での実行は5.0で終わり、現在はPythonでのみ動きます。Javaのコードは、Remoteライブラリ経由で呼び出します。

Robot FrameworkはRPAツールですか?

画面録画型の商用RPA製品とは別物です。ただし *** Tasks *** で書くか --rpa を付けると、テスト以外の定型作業を自動化するタスクとして実行できます。

BrowserライブラリとSeleniumLibraryはどちらを使うべきですか?

新規ならBrowserライブラリ、既存のSeleniumのテスト資産やSelenium Gridがある場合はSeleniumLibraryです。

関連記事

お気に入りに入れた記事の一覧

この記事は以下の記事からリンクされています

資料請求

今日のトレンド記事 直近 24 時間で、いつもより多く読まれている記事

  1. 2026.10.23 テックブログ Renta!不正アクセスでサービス停止:再開未定の現状と運営側の停止判断・証拠保全・段階的再開
  2. 2026.10.21 テックブログ ふるさとチョイス不正アクセスで445万件流出:対象確認・パスワード変更と再開時期
  3. 2026.10.14 テックブログ ローソンID不正アクセス:215万件漏えいの対象確認と本物メールの見分け方
  4. 2026.10.24 テックブログ ブラストメール不正アクセス:配信先288件の漏えいと利用企業の報告・通知の手順
  5. 2026.10.22 テックブログ お名前.com デスクトップクラウドの不正アクセス|MT4口座の不正操作と対象・今すること

RELATED POSTS 関連記事

目次