Python se burla de no hacer llamadas

Estoy usando la biblioteca simulada para parchear una clase en un progtwig que se conecta a un recurso externo y envía una dictadura.

La estructura va un poco como esta …

code.py

def make_connection(): connection = OriginalClass(host, port) connection.connect() connection.send(param) connection.close() 

test.py

 @mock.path('code.OriginalClass') def test_connection(self, mocked_conn): code.make_connection() mocked_conn.assert_called_with(host, port) mocked_conn.connect.assert_called_once() mocked_conn.send.assert_called_with(param) 

El primer assert_called_with funciona perfectamente, pero las llamadas al método de la clase simulada no pasan. He intentado usar patch.object como decorador también sin suerte.

Los métodos connect() y send() se invocan en el valor de retorno de la primera llamada; ajustar su prueba en consecuencia:

 mocked_conn.return_value.connect.assert_called_once() mocked_conn.return_value.send.assert_called_with(param) 

Generalmente almaceno una referencia a la ‘instancia’ primero:

 @mock.path('code.OriginalClass') def test_connection(self, mocked_conn): code.make_connection() mocked_conn.assert_called_with(host, port) mocked_instance = mocked_conn.return_value mocked_instance.connect.assert_called_once() mocked_instance.send.assert_called_with(param)