

高岡智則
年齢:33歳 性別:男性 職業:Webディレクター(兼ライティング・SNS運用担当) 居住地:東京都杉並区・永福町の1LDKマンション 出身地:神奈川県川崎市 身長:176cm 体系:細身〜普通(最近ちょっとお腹が気になる) 血液型:A型 誕生日:1992年11月20日 最終学歴:明治大学・情報コミュニケーション学部卒 通勤:京王井の頭線で渋谷まで(通勤20分) 家族構成:一人暮らし、実家には両親と2歳下の妹 恋愛事情:独身。彼女は2年いない(本人は「忙しいだけ」と言い張る)
conftestとは何か
conftest とは pytest というテストツールで使う特別なファイルの名前を指します。実際には conftest.py というファイルを用意します。このファイルの役割はテスト全体で使える設定やフィクスチャを共有することです。
テストファイルごとに同じ準備を行うと作業が大きくなり、変更時にも修正箇所が増えます。そこで conftest に準備を集約しておくと、テストコードをすっきり保てます。
どうして conftest が大切なのか
pytest ではフィクスチャと呼ばれるテストで使うデータや前処理の関数を用意します。conftest のフィクスチャは同じディレクトリ以下のテストで自動的に使えるため、各テストファイルに同じ関数を重複して書く必要がありません。
構成と探し方
pytest はテストを実行する際に現在のテストファイルがあるディレクトリから上方向へ conftest.py を探します。見つかったらそのファイルの中身を読み込み、テスト全体で利用できる設定を取り込みます。これにより、複数のサブディレクトリにまたがるテストでも一元管理が可能です。
フィクスチャの定義と使い方
conftest にはフィクスチャを定義します。フィクスチャは test 間で共有できるデータを作る関数で、テスト関数の引数として指定すると pytest が自動的に呼び出してくれます。例えばデータベースの接続を作るフィクスチャや、同じ準備済みのサンプルデータを返すフィクスチャなどが典型的です。
重要ポイント はフィクスチャの命名とスコープです。命名は test で使う引数名と同じにします。スコープは function, class, module, session から選べ、どの範囲で一度だけ準備を走らせるかを決めます。
スコープの違いと使い方のヒント
function スコープは各テスト関数ごとに新しいフィクスチャを作ります。class スコープは同じクラス内の複数のテストで共有します。module スコープは同じモジュール内のすべてのテストで共有します。session スコープはテストセッション全体で一度だけ作成します。
自動実行と注意点
autouse オプションを使うと、フィクスチャを明示的に引数で指定しなくても自動的にテストに適用できます。ただし自動適用は全体の実行時間や結果に影響することがあるため、慎重に使います。
また conftest は過度に複雑化させると見通しが悪くなります。フィクスチャは機能を分解して、小さく保つのが基本です。依存関係が複雑になると、どのテストがどのデータを使っているのか理解しにくくなります。
よくある活用例
例としてデータベース接続を作るフィクスチャ、テスト用の仮データを返すフィクスチャ、設定値を返すフィクスチャなどがあります。テストファイルでは次のように利用しますが、実際には名前を引数として渡すだけで OK です。
テーブルで覚えるフィクスチャの基本
| スコープ | function / class / module / session |
|---|---|
| テスト全体で使い回すデータや準備 | |
| 使い方のコツ | 名前を統一し、過度に複雑にしない |
まとめ
conftest は pytest の「設定を外部化する仕組み」です。テストの再利用性を高め、コードの重複を減らすために役立ちます。最初は基本的なフィクスチャから始め、徐々にスコープや autouse の使い方を学んでいくと、テストの作成が楽になり、品質も安定してきます。
conftestの関連サジェスト解説
- conftest.py とは
- conftest.py とは、Python のテストフレームワーク PyTest のための特別な設定ファイルです。プロジェクトのルートや tests ディレクトリに置くことで、複数のテストで共通に使う準備作業やデータをまとめて管理できます。たとえば、テストで使うデータを作る関数を fixtures(フィクスチャ)として用意し、テスト関数の引数として fixture の名前を書くと、自動的にデータが渡されます。これにより、同じような初期化コードを何度も書く必要がなくなります。conftest.py は PyTest がテストを実行する前に読み込まれるため、設定を一箇所に集約できるのが大きな利点です。設置場所は一般にプロジェクトのルートに置くのが基本ですが、テストのディレクトリ配下にも作成可能です。使い方のイメージをつかむためのポイントは次のとおりです。まず fixture を作り、返す値を決めます。次に test ファイルのテスト関数の引数として同じ名前を書くと、その fixture が返す値が自動的に使われます。自動的に使われる fixture のデータは test の実行中に毎回新しく作成されることが多いので、データの汚染を防ぐのに役立ちます。さらに、autouse オプションを使えば、テストの引数に書かなくても fixture を全てのテストに自動適用できます。ただし乱用すると読みづらくなるため、必要なときだけ使いましょう。重要な注意点として、conftest.py 自体はテストファイル名ではありません。テストを集める対象になるファイル名は test_ で始まるものにして、conftest.py はテスト実行時の設定用ファイルとして扱います。初心者の段階では、まずは一つの fixture を作って、テストファイルの引数として使うところから始めると理解が深まります。慣れるにつれて複数の fixture や活用法を学べば、テストコードをすっきりと保てるようになるでしょう。
conftestの同意語
- conftest.py
- pytest が自動的に読み込む、テスト全体の共通設定や fixture(前提データ)を定義するファイル。
- pytest設定ファイル
- pytest の挙動を決定する設定を記述するファイル。例: コンフィグ、オプション、デフォルト挙動の上書き。
- Fixture定義ファイル
- テストで使う fixture を定義して提供するファイル。fixture はテストの前提データや準備処理の共有を担う。
- テスト共通設定ファイル
- 複数のテストに共通して適用される設定をまとめたファイル。
- pytestフック定義ファイル
- pytest のイベント時点で実行される関数(フック)を定義するファイル。拡張ポイントを提供する。
- Fixturesモジュール
- 複数の fixture を一つのモジュールとしてまとめ、他のテストで再利用できるようにするファイル/モジュール。
- テスト前準備ファイル
- テスト実行前に共通して行う準備処理を定義するファイル。
- テストリソース提供ファイル
- テストデータや接続情報など、テストで使うリソースを提供するファイル。
- 共有セットアップファイル
- 複数のテストで共有される初期化・セットアップを定義するファイル。
- プラグイン連携用設定ファイル
- プラグインと連携して動作するための設定を含むことがあるファイル。
- テスト環境設定ファイル
- テストを走らせる環境に関する設定を記述するファイル。
- コンフィグレーションエントリポイント
- pytest が設定を読み込み始める入口的な役割を果たす設定要素。
- 補助的な設定ファイル
- conftest と同様の役割を補完・補助する設定ファイル。
conftestの対義語・反対語
- conftestなし
- conftest.pyを使わない状態。pytestが提供する共有のフィクスチャや設定を利用せず、個別にテストを書く状態です。
- フィクスチャなしテスト
- fixtureを使わず、テスト関数内でデータを都度準備するテストのことです。
- 手動設定テスト
- テスト内で手動で前処理・後始末を行い、pytestのフィクスチャ機能に頼らないテストのスタイルです。
- 局所設定テスト
- テストごとに個別の設定を行い、全体で共有される設定を使わない状態です。
- グローバル設定なし
- pytestのグローバル設定(共通のフィクスチャ・フック)を使わない状態です。
- 設定ファイルを使わないテスト
- pytest.iniやpyproject.tomlなどの設定ファイルを使わずに実行するテストのことです。
- コード内全記述テスト
- テストコード内に全てのデータ準備とクリーンアップを記述して、外部設定を使わない構成です。
- プリセット無しテスト
- 事前に準備されたプリセット設定を使わず、都度初期化して実行するテストです。
- 自動フィクスチャなし
- pytestの自動フィクスチャ解決機能を使わず、手動でデータや設定を渡すテストのことです。
- デフォルト設定のみのテスト
- pytestのデフォルト設定だけを用いたテスト。conftestや設定ファイルによる拡張を使わない前提です。
conftestの共起語
- pytest
- Python のテストフレームワークで、ユニットテストの自動化と豊富な補助機能を提供します。
- conftest.py
- テスト全体の設定とフィクスチャを定義する特別なファイル。pytest がディレクトリ階層に従って読み込み、共有フィクスチャの定義元となります。
- fixtures
- テスト実行時に用意されるデータ・状態の総称。フィクスチャの集合を指すことが多いです。
- fixture
- @pytest.fixture で定義する、テストに注入されるデータや準備作業を提供する関数。
- pytest_plugins
- 他ファイルのプラグインを読み込ませる宣言。
- addoption
- コマンドラインオプションを追加するためのヘルパー関数。
- addini
- pytest.ini などの ini 設定を追加するヘルパー。
- pytest_configure
- テスト実行前に呼ばれるフック関数。初期設定を行います。
- pytest_unconfigure
- テスト終了後の後片付けを行うフック関数。
- hook
- pytest のイベント時に呼ばれる関数群(フック)。
- plugin
- 機能拡張を提供するモジュール。
- autouse
- 特定のフィクスチャを自動的に全テストへ適用する設定。
- scope
- フィクスチャの適用範囲。function / class / module / session など。
- request
- 現在のテストやフィクスチャに関する情報を提供する特別なフィクスチャ。
- monkeypatch
- 環境変数や関数の挙動をテスト中に差し替えるためのフィクスチャ。
- tmp_path
- テスト中に作成される一時ディレクトリのパスを提供する組み込みフィクスチャ。
- tmp_path_factory
- 複数の一時ディレクトリを作成するファクトリとして機能します。
- caplog
- ログ出力を検査するためのキャプチャフィクスチャ。
- capsys
- 標準出力・標準エラーをキャプチャするフィクスチャ。
- capfd
- ファイルディスクリプタレベルで入出力をキャプチャするフィクスチャ。
- pytest.ini
- PyTest の設定ファイル(ini 形式)。
- conftest_directory
- conftest.py が読み込まれるディレクトリ群のこと。
- test_suite
- 関連するテストの集まり。conftest はこの範囲に適用されます。
- parametrize
- 同じテストを異なるデータで繰り返すためのデコレータ。
conftestの関連用語
- conftest
- pytestの設定・共有フィクスチャを定義する特別なファイル。テストディレクトリ内で共通のフィクスチャやフックを提供します。
- pytest
- Pythonのテストフレームワーク。アサーション強化、フィクスチャ、パラメータ化、プラグインなどを提供します。
- フィクスチャ
- テストに必要なデータやリソースを提供する関数。テスト関数の引数として受け取り、再現性を高めます。
- フィクスチャのスコープ
- フィクスチャの有効期間を決める設定。function/ class/ module/ session の4種類があり、再利用単位を決めます。
- autouse
- 自動適用フィクスチャ。テストで明示的に使用しなくても全テストに自動適用されます。
- request
- 現在のテスト関数の情報を提供する組み込みフィクスチャ。テスト名や呼び出し元情報を取得できます。
- パラメータ化
- @pytest.mark.parametrize によって、同一のテストを複数のパラメータで実行します。
- マーク
- pytest のマーク。skip、xfail、parametrize など、テストの挙動を制御します。
- pytest.ini
- pytest の設定ファイル。testpaths、addopts、markers などを記述します。
- pyproject.toml
- 設定をまとめる現代的なファイル。pytest の設定を含められ、他ツールとの統合にも使われます。
- テスト探索
- pytest がデフォルトの命名規約に基づき、テストファイルやテスト関数を自動的に見つけ出す仕組みです。
- フック
- pytest のイベントに応じて呼び出される関数群。conftest で pytest_runtest_setup などを実装します。
- プラグイン
- pytest を拡張する追加機能。新しいフィクスチャやコマンドラインオプションを提供します。
- モンキーパッチ
- 外部依存を一時的に置換するテスト支援。環境変数やオブジェクトをテスト内で差し替えます。
- capsys
- 標準出力・標準エラーのキャプチャを行うフィクスチャ。print の出力を検証できます。
- caplog
- ロギング出力をキャプチャするフィクスチャ。テスト中のログを検証できます。
- tmp_path
- テスト用の一時ディレクトリを提供するフィクスチャ。Pathオブジェクトを返します。
- 間接パラメータ化
- parametrize の indirect オプション。パラメータを直接値としてではなく、別のフィクスチャとして評価させます。
- yieldフィクスチャ
- フィクスチャ内で yield を使って値を返した後に後処理を行う、リソース解放のパターンです。
- クリーンアップ
- フィクスチャのtearDown 相当の処理。yield 後処理や finalizer で実装します。
- testpaths
- pytest.ini でテスト探索の対象ディレクトリを指定する設定項目です。
- norecursedirs
- 探索から除外するディレクトリを指定します。
- markers
- テストに付与するマークの定義。公式・独自のマークを宣言します。
- アサーションリライティング
- pytest がアサーションを内部で書き換え、エラーメッセージを分かりやすく表示します。
- collect-only
- --collect-only オプションで、テストを実行せずに収集のみを行います。
- fixtures一覧
- pytest --fixtures で現在利用可能なフィクスチャの一覧を表示します。
conftestのおすすめ参考サイト
- pytest|徹底解説:fixtures(基本編)|koふみ - note
- 【Python】Pytestとは?意味をわかりやすく簡単に解説 - trends
- pytestの基本的な概要とテスト自動化の役割について - 株式会社一創
- pytest|徹底解説:fixtures(基本編)|koふみ - note



















