If I run the following code with pytest test.py I get the output {'status': 'success', 'data': 'Dave'}. Why is that?
from unittest.mock import patch, MagicMockclass MessageHandler: def success_response(self, data): return {'status': 'success', 'data': data} def error_response(self, message=None, exception=None): return {'status': 'error', 'data': message or str(exception)}def create_db_if_it_doesnt_already_exists(): return 'Dave'def create_db() -> dict: msg = MessageHandler() result = None try: result = create_db_if_it_doesnt_already_exists() except Exception as e: return msg.error_response(exception=e) return msg.success_response(result)def test_create_db_success(): return_value = 'Dave' with patch('database.init_db.create_db_if_it_doesnt_already_exists') as mock_create_db: mock_create_db.return_value = return_value msg = MagicMock() msg.success_response = MagicMock(return_value={'status': 'success', 'data': return_value}) with patch('common.messages.MessageHandler', return_value=msg): response = create_db() mock_create_db.assert_called_once() msg.success_response.assert_called_once_with(return_value) assert response == {'status': 'success', 'data': return_value}def test_create_db_error(): error_string = 'There was an error' exception_instance = Exception(error_string) with patch('database.init_db.create_db_if_it_doesnt_already_exists', side_effect=exception_instance) as mock_create_db_1: #mock_create_db.side_effect = exception_instance msg_1 = MagicMock() msg_1.error_response = MagicMock(return_value={'status': 'error', 'data': error_string}) with patch('common.messages.MessageHandler', return_value=msg_1): response_1 = create_db() print(response_1) mock_create_db_1.assert_called_once() msg_1.error_response.assert_called_once() msg_1.error_response.assert_called_with(exception=exception_instance) assert response_1 == {'status': 'error', 'data': error_string}