私はpytestを自分のコードにかなり使っています。サンプルコードの構造は次のようになります。pytestでグローバルにパッチを当てるには?
from modules import stuff
from core.utils import Utility
class FeatureManager:
# lots of other methods
def execute(self, *args, **kwargs):
self._execute_step1(*args, **kwargs)
# some more code
self._execute_step2(*args, **kwargs)
utility = Utility()
utility.doThings(args[0], kwargs['variable'])
feature/tests/*
のすべてのテストはcore.feature.service.FeatureManager.execute
機能を使用して終了:全体のコードベースはpython-2.7
core/__init__.py
core/utils.py
#feature
core/feature/__init__.py
core/feature/service.py
#tests
core/feature/tests/__init__.py
core/feature/tests/test1.py
core/feature/tests/test2.py
core/feature/tests/test3.py
core/feature/tests/test4.py
core/feature/tests/test10.py
あるservice.py
は次のようになります。しかし、utility.doThings()
は私がテストを実行している間に実行する必要はありません。私はそれが生産アプリケーションが実行されている間に発生する必要がありますが、私はそれがテストが実行されている間に発生したくありません。
私はこれが仕事と私のcore/feature/tests/test1.py
from mock import patch
class Test1:
def test_1():
with patch('core.feature.service.Utility') as MockedUtils:
exectute_test_case_1()
にこのような何かを行うことができます。しかし、私はUtility
をコードベースに追加しました。私は300を超えるテストケースを持っています。私は各テストケースに入り、このwith
ステートメントを書いてはいけません。 がutility.doThings
を実行できないと判断する可能性のあるOSレベルの環境変数を設定するconftest.py
と書くことができますが、これがこの問題のクリーンな解決方法であるかどうかはわかりません。
誰かがセッション全体のグローバルパッチを手伝ってくれたらと思います。私は、上記のwith
ブロックを使って、セッション全体でグローバルに処理したことをしたいと思います。この問題の記事はすばらしいことになります。
TLDR:pytestsの実行中にセッションワイドパッチを作成するにはどうすればよいですか?