是否有一个干净的方式来修补一个对象,以便在测试用例中获得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
,但我希望会有其工作的一个更好的方式所有的功能,classmethods,staticmethods,非绑定方法同样的方式,等
'foo'和'bar'没有正确定义。他们应该是'def foo(self,n)'和'def bar(self,n)'。 – chepner 2014-09-01 14:38:44
是的,谢谢...修正 – wim 2014-09-01 14:39:12
另外,没有太多的说断言'foo'被调用,因为测试本身正在调用它,而不是一些正在测试的其他代码。同样,测试'forty_two'是由* test *设置为特定值,而不是测试代码,似乎没有多大价值。 – chepner 2014-09-01 14:46:39