Ответ 1
Я бы не использовал mocked_post
в качестве new
аргумента здесь. Вместо этого я установил атрибут side_effect
нового Mock
:
@patch('mylib.requests.post')
class MyTest(TestCase):
def test_foo(self, post_mock):
post_mock.side_effect = mocked_post
# Some test logic
self.assertEqual(post_mock.call_count, 3)
Теперь у вас есть объект Mock
который patch
генерирует для вас в качестве аргумента для всех ваших методов тестирования, и вы можете таким образом проверить, сколько раз был вызван макет.
Вы также должны установить атрибут side_effect
в декораторе, чтобы применить ко всем тестам:
@patch('mylib.requests.post', side_effect=mocked_post)
class MyTest(TestCase):
def test_foo(self, post_mock):
# Some test logic
self.assertEqual(post_mock.call_count, 3)
Однако у вас все еще есть проблемы с доступом к возвращенному объекту response
; вы можете вернуть mock.DEFAULT
из mocked_post
вместо того, чтобы создавать его в функции, чтобы затем вы могли использовать post_mock.return_value
для дальнейших утверждений о возвращаемом объекте.