Если вы хотите только заглушить метод, вы можете использовать модуль заглушки:
import stubout
s = stubout.StubOutForTesting()
s.Set(MyClass, 'method_with_side_effects', lambda self: None)
Если вы действительно хотите смоделировать метод, это более сложно.Вы можете создать экземпляр объекта напрямую с помощью __new__()
, чтобы избежать побочных эффектов от __init__()
, и использовать его для записи ожидаемого поведения:
import mox
m = mox.Mox()
m.StubOutWithMock(MyClass, 'method_with_side_effects')
instance = MyClass.__new__(MyClass)
instance.method_with_side_effects().AndReturn(None)
m.ReplayAll()
MyClass()
m.VerifyAll()
Если вам не требуется проверка поведения, используйтепни вместо насмешек гораздо менее хрупки.