目次
この記事について
この記事では、開発者が効率的に作業を進めるための重要なオープンソースソフトウェア「tox」を紹介します。この記事は、シリーズ第56回にあたります。
ソフトウェア開発においては、プロジェクトが進むにつれて、さまざまなツールやライブラリを用いてテストやビルドを行う必要があります。これらの作業を管理し、効率的に実行することは、開発者にとって不可欠です。特に、異なるPythonのバージョンやライブラリとの互換性を保ちながらテストを行うことは、しばしば困難を伴います。
「tox」は、こうした課題を解決するために開発された環境オーケストレーターであり、プロジェクトのテストや環境構築を自動化するための強力なツールです。このツールを利用することで、開発者は簡単にテスト環境を構成・実行できるようになり、従来の手動作業に伴うエラーを軽減し、作業の効率を向上させることが可能になります。この記事では、特に「tox」の基本機能や設定方法について詳しく解説し、その利用の意義を探ります。
リンク:https://tox.wiki/en/latest/user_guide.html

本コンテンツは、弊社AI開発ツール「IXV」を用いたOSSツール紹介です。情報の正確性には努めておりますが、内容に誤りが含まれる可能性がございますのでご了承ください。
1. toxでできること
toxは、環境のオーケストレーションツールです。プロジェクトに必要なさまざまなツールを設定し、実行するために使用します。toxは、以下の環境を設定し、実行することができます。
- テストランナー(例:pytest)
- リンター(例:flake8)
- フォーマッター(例:blackやisort)
- ドキュメント生成ツール(例:Sphinx)
- ビルドおよび公開ツール(例:buildとtwine)
これにより、複数のPythonバージョンや依存関係の構成に対して、Pythonパッケージのテストを自動化し、煩雑なテスト関連の作業を効率化します。
2. セットアップ手順
toxを使用するには、まず環境を整える必要があります。以下は、toxのインストールと設定方法です。
toxのインストール
toxはCLIツールであり、Pythonインタプリタ(バージョン3.9以上)が必要です。toxを特定の環境でインストールすることをお勧めします。以下は、インストール方法のいくつかです。
- pipxを使用する場合
python -m pip install --user pipx
pipx install tox
tox --help
- uvを使用する場合
uv tool install tox
tox --help
- pipを使用する場合(推奨されていません)
python -m pip install --user tox
python -m tox --help
動作環境としては、toxはCPython 3.9以上を要求しますが、2.7以降の環境を作成することも可能です。
- toxの設定
toxでは、ツールを実行するための設定ファイルが必要です。tox.toml
またはtox.ini
というファイルを作成し、実行するツールとテスト環境のプロビジョニング方法を定義します。
以下は、tox.
htmlの基本的な例です。
[tox]
requires = ["tox>=4"]
env_list = ["lint", "type", "3.13", "3.12", "3.11"]
[env_run_base]
description = "run unit tests"
deps = [
"pytest>=8",
"pytest-sugar"
]
commands = [["pytest", { replace = "posargs", default = ["tests"], extend = true }]]
[env.lint]
description = "run linters"
skip_install = true
deps = ["black"]
commands = [["black", { replace = "posargs", default = ["."] , extend = true}]]
以下は、tox.ini
の基本的な例です。
[tox]
requires = tox>=4
env_list = lint, type, 3.1{3,2,1}
[testenv]
description = run unit tests
deps =
pytest>=8
pytest-sugar
commands =
pytest {posargs:tests}
[testenv:lint]
description = run linters
skip_install = true
deps =
black
commands = black {posargs:.}
3. 簡単な使い方
toxを設定したら、コマンドラインから実行してみましょう。以下は、toxを使用する際の基本的なコマンドです。
全てのtox環境を実行する
tox
特定の環境を実行する
tox -e py310
複数の環境を実行する
tox -e format,py310
環境を並列に実行する
tox parallel -e py39,py310
このように、toxはテスト環境の設定から実行までを簡潔に行うことができます。各環境の実行結果は、コマンドの実行後にレポートとして出力されます。
結論
toxは、Pythonプロジェクトにおけるテスト環境の管理を効率化する強力なツールです。テストランナーやリンター、フォーマッターなど、さまざまなツールを簡単に設定し、実行できるため、開発者にとって非常に便利です。特に、複数のPythonバージョンに対応したテストを自動化できる点は、大きな利点と言えます。環境の設定や実行がシンプルであるため、開発者は本来の作業に集中しやすくなります。是非、toxを活用して効率的な開発フローを実現してください。