是否有一個乾淨的方式來修補一個對象,以便在測試用例中獲得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