conftestとは?初心者が知っておくべきpytestの秘密ファイルと使い方共起語・同意語・対義語も併せて解説!

  • このエントリーをはてなブックマークに追加
conftestとは?初心者が知っておくべきpytestの秘密ファイルと使い方共起語・同意語・対義語も併せて解説!
この記事を書いた人

高岡智則

年齢: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 です。

テーブルで覚えるフィクスチャの基本

<th>用途
コープ 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のおすすめ参考サイト


インターネット・コンピュータの人気記事

awstatsとは?初心者でもわかる使い方と基本解説共起語・同意語・対義語も併せて解説!
15471viws
bing・とは?初心者のための基本ガイド:検索エンジンの仕組みと使い方共起語・同意語・対義語も併せて解説!
2478viws
着信転送とは?初心者向けガイドで分かる使い方と設定のコツ共起語・同意語・対義語も併せて解説!
1112viws
差し込み印刷・とは?初心者でもすぐわかる使い方と仕組みガイド共起語・同意語・対義語も併せて解説!
1091viws
com端子・とは?初心者にも分かる基礎ガイド|シリアルポートの使い方と歴史を解説共起語・同意語・対義語も併せて解説!
984viws
充電アダプターとは何かを徹底解説|初心者でも分かる基本と選び方のコツ共起語・同意語・対義語も併せて解説!
936viws
7zファイル・とは?初心者でもわかる使い方と特徴を解説共起語・同意語・対義語も併せて解説!
894viws
全角文字とは?初心者向け解説|全角と半角の違いをやさしく学ぶ共起語・同意語・対義語も併せて解説!
885viws
リマインドメールとは?初心者にもわかる基本ガイドと使い方のコツ共起語・同意語・対義語も併せて解説!
824viws
pinロックとは?初心者が知っておくべき基本と使い方ガイド共起語・同意語・対義語も併せて解説!
823viws
none とは?初心者にもやさしく解説する意味と使い方ガイド共起語・同意語・対義語も併せて解説!
752viws
16進数カラーコード・とは?初心者でもつまずかない基礎と使い方ガイド共起語・同意語・対義語も併せて解説!
741viws
xlsmとは?初心者でも分かるExcelのマクロ付きファイルの基本共起語・同意語・対義語も併せて解説!
645viws
ローカルポート・とは?初心者にも分かる基本と使い方ガイド共起語・同意語・対義語も併せて解説!
643viws
asp・とは?初心者向けに徹底解説する基本と使い方ガイド共起語・同意語・対義語も併せて解説!
642viws
countifとは?初心者でもすぐ使える基本と応用ガイド共起語・同意語・対義語も併せて解説!
574viws
ワンタイムコード・とは?初心者でも分かる基本と使い方ガイド共起語・同意語・対義語も併せて解説!
561viws
sha256とは?初心者が知るべき暗号ハッシュの基礎と使い道共起語・同意語・対義語も併せて解説!
540viws
csvダウンロードとは?初心者が今すぐ使える基本ガイド共起語・同意語・対義語も併せて解説!
535viws
googleドキュメントとは?初心者が今日から使いこなす基本ガイド共起語・同意語・対義語も併せて解説!
496viws

新着記事

インターネット・コンピュータの関連記事