日々精進

新しく学んだことを書き留めていきます

Pythonのテストコードでglobalな状態を変更しても他のテストの実行結果に影響を与えないようにしたい

Config.PARAM = "1"

のようにstaticな変数にパラメータを保持しているような場合、これを変更するテストコードがあると、そのテストコード以降に実行される別のテストコードがコケることがある。

他のテストに影響を与えないようにしたいので、fixtureを使ってテスト開始時にデフォルトの値に戻すようにした。

例えば、conftest.pyに以下のようにGlobal変数を初期化するglobal fixtureを定義する。

@pytest.fixture(scope="function", autouse=True)
def global_vars_setup():
    GlobalVars.init()

これでもテストを並列実行すると失敗することあるよなぁ。。もっと良い方法ないかな。

参考:

qiita.com