Make Spider.update_settings() an instance method

This commit is contained in:
Jakob de Maeyer 2015-11-10 23:48:20 +01:00
parent daec045711
commit 2629997a2f
2 changed files with 9 additions and 4 deletions

View File

@ -75,9 +75,8 @@ class Spider(object_ref):
def parse(self, response):
raise NotImplementedError
@classmethod
def update_settings(cls, settings):
settings.setdict(cls.custom_settings or {}, priority='spider')
def update_settings(self, settings):
settings.setdict(self.custom_settings or {}, priority='spider')
@classmethod
def handles_request(cls, request):

View File

@ -98,11 +98,17 @@ class SpiderTest(unittest.TestCase):
self.spider_class.custom_settings = spider_settings
settings = Settings(project_settings, priority='project')
self.spider_class.update_settings(settings)
spider = self.spider_class('example.com')
spider.update_settings(settings)
self.assertEqual(settings.get('TEST1'), 'spider')
self.assertEqual(settings.get('TEST2'), 'spider')
self.assertEqual(settings.get('TEST3'), 'project')
spider_instance_settings = {'TEST1': 'spider_instance'}
spider.custom_settings = spider_instance_settings
spider.update_settings(settings)
self.assertEqual(settings.get('TEST1'), 'spider_instance')
def test_logger(self):
spider = self.spider_class('example.com')
with LogCapture() as l: