---
title: "Robot Frameworkとは？Pythonのテスト自動化の使い方と主要ライブラリ【7.5対応】"
url: "https://www.issoh.co.jp/tech/details/9045/"
published: 2025-09-29
updated: 2026-10-18
categories: ["テスト"]
publisher: "株式会社一創"
---

# 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はテキストファイルに手順を書き、コマンドで実行するフレームワークです。

ただし、テスト以外の自動化にも使えます。[公式ユーザーガイド](https://robotframework.org/robotframework/latest/RobotFrameworkUserGuide.html#generic-automation-mode)によると、`*** 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年】](/tech/details/9050/)にまとめています。

### 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対応】](/tech/details/7527/)の方が速く、Given/When/Thenの文章で仕様を合意したいなら[Gherkinとは？構文の全キーワードと.featureファイルの書き方・実行例](/tech/details/11693/)が合います。Robot Frameworkが強いのは、テスト担当者と開発者が同じファイルを読み書きし、Web・APIをまとめて1つのレポートに出したい場面です。

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

本体はPyPIで配布されています。[PyPIのrobotframeworkのページ](https://pypi.org/project/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のリリースノート](https://github.com/robotframework/robotframework/blob/master/doc/releasenotes/rf-5.0.rst)でPython 3.6以降が必須になり、JythonとIronPythonの対応は終わりました。Javaのコードを呼びたい場合は、Java側にRemoteライブラリのサーバーを立てて呼び出します。

### エディタとGUI：RobotCodeとRIDE

.robotファイルはテキストなので、どのエディタでも書けます。VS CodeやJetBrains系では、補完・定義ジャンプ・実行ボタンを追加する拡張機能 [RobotCode](https://robotcode.io/) があります。表形式の画面でテストを編集したい場合は、公式のGUIエディタRIDE（PyPIのrobotframework-ride、2026年10月時点の最新は7月公開の2.2.4）もあります。書式の検査と整形は、Robotidyが統合された [Robocop](https://robocop.dev/stable/) の `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和訳・日本語ドキュメント集](https://robotframework-ja.readthedocs.io/ja/latest/) は、表示されている版が `3.0.1.dev20151231` です。基本の考え方は今も通用しますが、構文は2015年当時のままで、[「高度な機能」の「for ループ」節](https://robotframework-ja.readthedocs.io/ja/latest/userguide/CreatingTestData/AdvancedFeatures.html)にある `: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のリリースノート](https://github.com/robotframework/robotframework/blob/master/doc/releasenotes/rf-4.0.rst)で旧構文の削除が告知されています。古いサンプルを写すときは、まずここを書き換えます。

### 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日公開）](https://github.com/robotframework/robotframework/blob/master/doc/releasenotes/rf-7.4.rst)では、値をログに出さない `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のリリースノート](https://github.com/robotframework/robotframework/blob/master/doc/releasenotes/rf-7.5.rst)にある主な新機能の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](https://github.com/MarketSquare/robotframework-browser)の手順では、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系の実行手順・ツール選定を解説](/tech/details/17435/)と[Playwright（プレイライト）とは？仕組み・できること・Seleniumとの違いを解説](/tech/details/3167/)で説明しています。

### 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組み込みまで実装手順で解説](/tech/details/17392/)の方が手早い場合もあります。WebとAPIを同じスイートで流したいときにRobot Frameworkを選びます。

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

モバイルアプリはAppiumLibrary（3.2.1）でAppiumサーバー経由で操作します。Appium側の現状は[Appium Desktopは終了｜Appium 3時代のInspector移行とモバイルテスト自動化](/tech/details/10729/)を参照してください。データベースの値の確認には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プラグイン](https://plugins.jenkins.io/robot/)（2026年10月時点の最新は9月公開の6.3.0）を入れると、output.xmlを読んでビルドごとの成否の推移とログをJenkinsの画面に表示できます。テストの層をどう分けてCIに載せるかは、[テストピラミッドとは？単体・結合・E2Eの配分と実装者向けテスト戦略設計](/tech/details/13289/)で扱っています。CIの仕組みづくりから相談したい場合は、[DevOps・CI/CD導入支援](/service/system/devops/)でもお手伝いしています。

## 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です。

## 関連記事

- [Seleniumとは？WebDriverの仕組みと4系の実行手順・ツール選定を解説](/tech/details/17435/)
- [Playwright（プレイライト）とは？仕組み・できること・Seleniumとの違いを解説](/tech/details/3167/)
- [pytestの使い方と書き方｜fixture・parametrize・docstringの扱いまで【9.1対応】](/tech/details/7527/)
- [Gherkinとは？構文の全キーワードと.featureファイルの書き方・実行例](/tech/details/11693/)
- [テストピラミッドとは？単体・結合・E2Eの配分と実装者向けテスト戦略設計](/tech/details/13289/)

---

出典: [Robot Frameworkとは？Pythonのテスト自動化の使い方と主要ライブラリ【7.5対応】](<https://www.issoh.co.jp/tech/details/9045/>)（株式会社一創）
