[Pytest] Fixture¶
Pytestのfixtureについて
以下の記事を参考にしている。
pytest:フィクスチャ(fixture)の使い方 - Qiita
はじめに
pytestはPython用のテストツールです。
標準のunittestに比べ、テストエラー時の結果が分かりやすいのが特徴です。
例として、辞書オブジェクトを比較する以下のテストコードをunittestとpytes...
                
            fixtureのサンプル¶
conftest.pyを同階層に配置する。
他にも色々方法はあるが、一番よく使うのがこれ。
以下はJumeauxサーバを立ち上げる例。
@pytest.fixture(scope="module")
def boot_server():
    print("fixture: boot_server start")
    p = subprocess.Popen(["python", "jumeaux/main.py", "server"])
    yield
    pid = p.pid
    print(f"boot_server returned: {pid}")
    p.kill()
    print(f"boot_server killed: {pid}")
yiledの前後で意味合いが変わる。
yieldの前scopeに入る前の処理yieldの後scopeを出た後の処理
yieldに値を指定すると、テストケースで返却値を受け取り処理できる。
Scope¶
@pytest.fixture(scope="module")のようにデコレータで定義する。
デフォルトはfunction。
| scope | 実行ルール | 
|---|---|
| function | テスト関数ごとに実行される | 
| class | クラスごとに実行される | 
| module | モジュール(ファイル)ごとに実行される | 
| session | 1度だけ実行される | 
boot_serverの場合は各テストファイルごとに実行される。