【てすとふぃくすちゃ】

テストフィクスチャ とは?

最終更新:
💡 テストに必要な準備と片付けの仕組み

テストに必要なデータや環境を準備し、使い終えたら片付けるための仕組みや、その環境のこと。初期データ、一時ファイル、モックなどを用意し、テスト同士が不要に影響しないようにする。

📌 このページのポイント
準備 → テスト → 片付け 準備 必要な状態を 用意する テスト 操作し、結果を 確かめる 片付け 資源を解放し 状態を戻す 用意するものの例 テストデータ モック 一時ファイル 設定 共有する範囲と、途中失敗時の片付けも設計
準備が成功した場合の流れ。具体的なフック名や後処理の条件はフレームワークによる。
ひよこ ひよこ
テストデータと同じもの?
ペンギン先生 ペンギン先生
データに限らないよ。たとえばテスト用DBの初期状態、一時ファイル、モックの設定などを含む。テストに必要な環境を用意し、後で片付ける仕組みもフィクスチャと呼ぶんだ。
ひよこ ひよこ
どうやって準備するの?
ペンギン先生 ペンギン先生
PythonのunittestならsetUpで準備し、tearDownで片付ける例がある。pytestならfixture関数に準備を書き、yieldの後に片付けを書く方法があるよ。書き方はフレームワークによるんだ。
ひよこ ひよこ
テストが失敗しても片付ける?
ペンギン先生 ペンギン先生
unittestではsetUpが成功していれば、テストの成否にかかわらずtearDownが呼ばれる。ただし準備の途中で失敗した場合は別。pytestでもyield前に例外が出ると、そのfixtureのyield後の処理は走らないので、途中失敗も考えて設計するよ。
ひよこ ひよこ
全部のデータを最初に用意すればいい?
ペンギン先生 ペンギン先生
まず、そのテストに必要な条件を明確にしよう。注文1件を確認するなら、どの会員や商品が必要か分かる形にする。関係のないデータを増やすと、失敗の原因を追いにくくなることがあるよ。
ひよこ ひよこ
複数のテストで共有してもいい?
ペンギン先生 ペンギン先生
pytestは関数・モジュール・セッションなど共有範囲を指定できるよ。準備の負担を減らせる一方、共有状態を書き換えると別のテストに影響し得る。範囲とリセット、片付けの責任を一緒に決めるんだ。
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「テストフィクスチャ」って出てきたら「テストに必要なデータや環境を準備し、片付ける仕組み」と思えばだいたいOK!
📖 おまけ:英語の意味
「Test Fixture」 = テストの固定装置
💬 fixtureは「固定されたもの、取り付け器具」という意味だよ。テストが安定して動くための「固定された土台」というイメージだね

参考資料

← 用語集にもどる