Прежде всего, не вызывайте ваш метод во время импорта.Это не может быть необходимым, конечно?
Если get_data
делает что-то вроде get
запроса, например,
def get_data():
response = requests.get(DATA_URL)
if response.ok:
return response
else:
return None
Тогда вы можете высмеять его;
from unittest.mock import Mock, patch
from nose.tools import assert_is_none, assert_list_equal
from external_service import ExternalService
@patch('external_service.requests.get')
def test_getting_data(mock_get):
data = [{
'content': 'Response data'
}]
mock_get.return_value = Mock(ok=True)
mock_get.return_value.json.return_value = data
response = ExternalService.get_data()
assert_list_equal(response.json(), data)
@patch('external_service.requests.get')
def test_getting_data_error(mock_get):
mock_get.return_value.ok = False
response = ExternalService.get_data()
assert_is_none(response)
Для этого вам понадобится pip install nose
, если у вас его еще нет.