オブジェクトに1種類のパッチを適用するクラスにいくつかのテストメソッドがあるので、クラスデコレータでパッチを当てました。私は別の方法を1つの別の同じオブジェクトを修正したい。次のアプローチを試しましたが、メソッド自体に別のパッチを付けても、クラスデコレータとして作成されたパッチは有効です。メソッドパッチがクラスパッチをオーバーライドすることを期待しました。なぜこれは当てはまりませんか?メソッドpatch(デコレータ)でクラスパッチをオーバーライドします
このケースでは、クラスパッチとパッチの個別メソッドを削除できますが、それは繰り返します。このようなオーバーライド(メソッドオーバーライドクラスパッチ)メカニズムを実装するにはどうすればよいですか?
from unittest TestCase
from unittest import mock
@mock.patch('my_module.cls.method', mock.Mock(side_effect=RuntimeError('testing'))
class SwitchViewTest(TestCase):
def test_use_class_patching(self):
# several other methods like this
# test code ..
@mock.patch('my_module.cls.method', mock.Mock(side_effect=RuntimeError('custom'))
def test_override_class_patching(self):
# test code ...