に、私は次のクラスで定義されたユニットテストmethodA
、にあるとし、次のように私のテストクラスがあるどのようにユニットテストを飾っ方法
class SomeClass(object):
def wrapper(fun):
def _fun(self, *args, **kwargs):
self.b = 'Original'
fun(self, *args, **kwargs)
return _fun
@wrapper
def methodA(self):
pass
:
from mock import patch
class TestSomeClass(object):
def testMethodA(self):
def mockDecorator(f):
def _f(self, *args, **kwargs):
self.b = 'Mocked'
f(self, *args, **kwargs)
return _f
with patch('some_class.SomeClass.wrapper', mockDecorator):
from some_class import SomeClass
s = SomeClass()
s.methodA()
assert s.b == 'Mocked', 's.b is equal to %s' % s.b
私がテストを実行する場合私はアサーションを打つ:
私がテストにブレークポイントを当てはめると、パッチの後に、私はを見ることができますだけで罰金を嘲笑されていますが、それmethodA
はまだ古いラッパー参照:
(Pdb) p s.wrapper
<bound method SomeClass.mockDecorator of <some_class.SomeClass object at 0x7f9ed1bf60d0>>
(Pdb) p s.methodA
<bound method SomeClass._fun of <some_class.SomeClass object at 0x7f9ed1bf60d0>>
問題がここにあるものの任意のアイデアを?