Вы должны исправить функцию, так как она импортирована. Одна из возможностей исправить это - использовать:
from mock import patch, Mock
import cia_admin_operations.redshift_util
@patch('cia_admin_operations.redshift_util.execute_redshift_sql')
def test_is_user_present(mock_execute_redshift_sql):
ldap_user = "dummy_user"
mock_out = Mock()
user_check_sql = "SELECT COUNT(1) FROM pg_user WHERE usename = '{}';".format(ldap_user)
mock_execute_redshift_sql.return_value = 1
result = cia_admin_operations.redshift_util.execute_redshift_sql(mock_out, user_check_sql)
print(result)
В вашем случае вы смоделировали функцию из пакета, но использовали локально импортированный модуль. Вы всегда должны проверять , куда патчить .
Выше я адаптировал импорт, вы также можете адаптировать патч:
from mock import patch, Mock
from cia_admin_operations.redshift_util import execute_redshift_sql
@patch('redshift_test.execute_redshift_sql')
def test_is_user_present(mock_execute_redshift_sql):
ldap_user = "dummy_user"
mock_out = Mock()
user_check_sql = "SELECT COUNT(1) FROM pg_user WHERE usename = '{}';".format(ldap_user)
mock_execute_redshift_sql.return_value = 1
result = execute_redshift_sql(mock_out, user_check_sql)
print(result)
(вы должны заменить redshift_test
для имени вашего тестового модуля в patch
декораторе)