autouse フィクスチャ

Pythonによるテスト入門

Alexander Levin

Data Scientist

autouse 引数

  • フィクスチャの任意のブール引数
  • フィクスチャデコレータに渡せる
  • autouse=True の場合、要求に関係なく実行
  • 冗長なフィクスチャ呼び出しを減らす
Pythonによるテスト入門

使用する場面

すべてのテストに同じ環境準備や変更を適用したい場合。

例えば、すべてのテストで以下を保証したいとき:

  • 同じデータを使う
  • 同じ接続(データ、API など)を使う
  • 同じ環境設定にする
  • モニタ、ロギング、プロファイリングを有効化する

これらはすべて 「autouse」引数で対応します。

Pythonによるテスト入門

Autouse の例

「autouse」フィクスチャの例:

import pytest
import pandas as pd

# Autoused fixture
@pytest.fixture(autouse=True)
def set_pd_options():
    pd.set_option('display.max_columns', 5000)

# Test function
def test_pd_options():
    assert pd.get_option('display.max_columns') == 5000
Pythonによるテスト入門

Autouse の誤った例

「autouse」フィクスチャの誤った例:

import pytest
import pandas as pd

# Wrong autoused fixture
@pytest.fixture(autouse=True)
def wrong_fixture():
    return [1,2,3,4,5]

# Test function
def test_type():
    assert type(wrong_fixture) == list

修正後のフィクスチャ例:

import pytest
import pandas as pd

# Wrong autoused fixture
@pytest.fixture
def correct_fixture():
    return [1,2,3,4,5]

# Test function
def test_type(correct_fixture):
    assert type(correct_fixture) == list
Pythonによるテスト入門

Autouse 例: 出力

例の出力:

autouse の例の出力

Pythonによるテスト入門

まとめ

  • autouse の定義: フィクスチャデコレータの任意のブール引数
  • 使い方: @pytest.fixture(autouse=True)
  • 利点: 冗長なフィクスチャ呼び出しを減らし、コードを簡潔にする
  • 特性: autouse=True だと要求の有無にかかわらず実行される
  • 使用タイミング: 環境の準備や変更を適用したい場合
  • ユースケース例:
    • すべてのテストでのデータ読み取りと準備
    • 接続や環境パラメータの設定
    • モニタ・ロガー・プロファイラの導入
Pythonによるテスト入門

演習に進みましょう!

Pythonによるテスト入門

Preparing Video For Download...