How To Mock A Socket Object Via The Mock Library
How to mock a TCPSocket wrapper for the socket from the Python's standard libary via the mock library (unittest.mock in case of Python 3)? This is my wrapper: import socket import
Solution 1:
It can be as simple as
import mock # or from unittest import mock
mock_socket = mock.Mock()
mock_socket.recv.return_value = datathen use mock_socket where you would use the real socket. You can also mock whatever creates the socket to return a mock value like the one configured here, depending on your needs.
For your case, you can mock socket.socket so that it returns something whose method you can configure. Note that mock_socket in this example is a function that returns a Socket object, not a Socket object itself.
with mock.patch('socket.socket') as mock_socket:
mock_socket.return_value.recv.return_value = some_data
t = TCPSocket()
t.connect('example.com', 12345) # t.sock is a mock object, not a Socket
self.assertEqual(t.recv_bytes(), whatever_you_expect)
t.sock.connect.assert_called_with(('example.com', 12345))
Post a Comment for "How To Mock A Socket Object Via The Mock Library"