[Pytest] Fixture¶
Pytestのfixtureについて
以下の記事を参考にしている。
Qiita
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
の場合は各テストファイルごとに実行される。