Quantcast
Channel: Active questions tagged python - Stack Overflow
Viewing all articles
Browse latest Browse all 23390

Second test is returning first tests response (function bleeding)

$
0
0

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}

Viewing all articles
Browse latest Browse all 23390

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>