Есть ли чистый способ для исправления объекта, чтобы вы получили помощники 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
, но я надеялся, что будет более удобный способ, который работает одинаково со всеми функциями, методами класса, staticmethods, несвязанными методами и т.д.