我在一個類中使用了一種類型的修補程序,因此我使用類修飾程序修補了一些類中的測試方法。對於另一種方法,我想以不同的方式修補相同的對象。我嘗試了以下方法,但作爲類裝飾器生成的修補程序仍然有效,儘管方法本身正在用不同的修補程序進行修飾。我預計方法補丁會覆蓋類補丁。爲什麼不是這種情況?使用方法修補程序覆蓋類修補程序(修飾符)
在這種特殊情況下,我可以刪除班級補丁和補丁個別方法,但這是重複的。我怎樣才能實現這樣的重寫(方法覆蓋類補丁)機制?
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 ...