diff --git a/scrapy/extensions/feedexport.py b/scrapy/extensions/feedexport.py index b2f7267a2..39d05de49 100644 --- a/scrapy/extensions/feedexport.py +++ b/scrapy/extensions/feedexport.py @@ -98,7 +98,8 @@ class S3FeedStorage(BlockingFeedStorage): # without using from_crawler) no_defaults = access_key is None and secret_key is None if no_defaults: - from scrapy.conf import settings + from scrapy.utils.project import get_project_settings + settings = get_project_settings() if 'AWS_ACCESS_KEY_ID' in settings or 'AWS_SECRET_ACCESS_KEY' in settings: import warnings from scrapy.exceptions import ScrapyDeprecationWarning diff --git a/tests/test_feedexport.py b/tests/test_feedexport.py index eef0384cf..14bb72170 100644 --- a/tests/test_feedexport.py +++ b/tests/test_feedexport.py @@ -26,6 +26,7 @@ from scrapy.extensions.feedexport import ( BlockingFeedStorage) from scrapy.utils.test import assert_aws_environ, get_s3_content_and_delete, get_crawler from scrapy.utils.python import to_native_str +from scrapy.utils.project import get_project_settings class FileFeedStorageTest(unittest.TestCase): @@ -134,8 +135,10 @@ class BlockingFeedStorageTest(unittest.TestCase): class S3FeedStorageTest(unittest.TestCase): - @mock.patch('scrapy.conf.settings', new={'AWS_ACCESS_KEY_ID': 'conf_key', - 'AWS_SECRET_ACCESS_KEY': 'conf_secret'}, create=True) + @mock.patch('scrapy.utils.project.get_project_settings', + new=mock.MagicMock(return_value={'AWS_ACCESS_KEY_ID': 'conf_key', + 'AWS_SECRET_ACCESS_KEY': 'conf_secret'}), + create=True) def test_parse_credentials(self): try: import boto