最佳答案
是否有一种干净的方法来修补一个对象,以便在测试用例中获得 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
把它们组合在一起,但是我希望能有一种更好的方法,可以在所有函数、类方法、 staticmethod、 unbound 方法等等上以同样的方式工作。