有没有一种干净的方法来修补对象,以使assert_call*
助手进入测试用例,而无需实际删除操作?
例如,如何修改该@patch
行以通过以下测试:
from unittest import TestCase
from mock import patch
class Potato(object):
def foo(self, n):
return self.bar(n)
def bar(self, n):
return n + 2
class PotatoTest(TestCase):
@patch.object(Potato, 'foo')
def test_something(self, mock):
spud = Potato()
forty_two = spud.foo(n=40)
mock.assert_called_once_with(n=40)
self.assertEqual(forty_two, 42)
我可能会使用一起破解side_effect
,但是我希望有一种更好的方法可以在所有函数,类方法,静态方法,未绑定方法等上以相同的方式工作。
foo
被调用没有太多意义,因为测试本身正在调用它,而不是正在测试的其他代码。同样,forty_two
由test设置为特定值的测试(而非经过测试的代码)似乎没有什么价值。