From daec0457110e188a131271f9fce86ecb1dbd14c6 Mon Sep 17 00:00:00 2001 From: Jakob de Maeyer Date: Mon, 9 Nov 2015 18:07:05 +0100 Subject: [PATCH] Move spider settings tests --- tests/test_crawl.py | 32 +++++++++++++++++++++++++++++++- tests/test_crawler.py | 32 -------------------------------- 2 files changed, 31 insertions(+), 33 deletions(-) diff --git a/tests/test_crawl.py b/tests/test_crawl.py index 35de5527d..021849f41 100644 --- a/tests/test_crawl.py +++ b/tests/test_crawl.py @@ -7,7 +7,10 @@ from twisted.internet import defer from twisted.trial.unittest import TestCase from scrapy.http import Request -from scrapy.crawler import CrawlerRunner +from scrapy.crawler import Crawler, CrawlerRunner +from scrapy.extensions.throttle import AutoThrottle +from scrapy.settings import Settings +from scrapy.utils.spider import DefaultSpider from tests import mock from tests.spiders import FollowAllSpider, DelaySpider, SimpleSpider, \ BrokenStartRequestsSpider, SingleRequestSpider, DuplicateStartRequestsSpider @@ -272,3 +275,30 @@ with multiples lines self._assert_retried(log) self.assertIn("Got response 200", str(log)) + + @defer.inlineCallbacks + def test_populate_spider_settings(self): + spider_settings = {'TEST1': 'spider', 'TEST2': 'spider', + 'AUTOTHROTTLE_ENABLED': True} + project_settings = {'TEST1': 'project', 'TEST3': 'project'} + + class CustomSettingsSpider(DefaultSpider): + custom_settings = spider_settings + + def parse(self, response): + return + + settings = Settings() + settings.setdict(project_settings, priority='project') + crawler = Crawler(CustomSettingsSpider, settings) + yield crawler.crawl() + + self.assertEqual(crawler.settings.get('TEST1'), 'spider') + self.assertEqual(crawler.settings.get('TEST2'), 'spider') + self.assertEqual(crawler.settings.get('TEST3'), 'project') + + enabled_exts = [e.__class__ for e in crawler.extensions.middlewares] + self.assertIn(AutoThrottle, enabled_exts) + + self.assertFalse(settings.frozen) + self.assertTrue(crawler.settings.frozen) diff --git a/tests/test_crawler.py b/tests/test_crawler.py index 53a1202e3..96bf0c866 100644 --- a/tests/test_crawler.py +++ b/tests/test_crawler.py @@ -7,7 +7,6 @@ from scrapy.settings import Settings, default_settings from scrapy.spiderloader import SpiderLoader from scrapy.utils.spider import DefaultSpider from scrapy.utils.misc import load_object -from scrapy.extensions.throttle import AutoThrottle class BaseCrawlerTest(unittest.TestCase): @@ -33,24 +32,6 @@ class CrawlerTestCase(BaseCrawlerTest): self.crawler.spiders self.assertEqual(len(w), 1, "Warn deprecated access only once") - def test_populate_spidercls_settings(self): - spider_settings = {'TEST1': 'spider', 'TEST2': 'spider'} - project_settings = {'TEST1': 'project', 'TEST3': 'project'} - - class CustomSettingsSpider(DefaultSpider): - custom_settings = spider_settings - - settings = Settings() - settings.setdict(project_settings, priority='project') - crawler = Crawler(CustomSettingsSpider, settings) - - self.assertEqual(crawler.settings.get('TEST1'), 'spider') - self.assertEqual(crawler.settings.get('TEST2'), 'spider') - self.assertEqual(crawler.settings.get('TEST3'), 'project') - - self.assertFalse(settings.frozen) - self.assertTrue(crawler.settings.frozen) - def test_crawler_accepts_dict(self): crawler = Crawler(DefaultSpider, {'foo': 'bar'}) self.assertEqual(crawler.settings['foo'], 'bar') @@ -61,19 +42,6 @@ class CrawlerTestCase(BaseCrawlerTest): self.assertOptionIsDefault(crawler.settings, 'RETRY_ENABLED') -class SpiderSettingsTestCase(unittest.TestCase): - def test_spider_custom_settings(self): - class MySpider(scrapy.Spider): - name = 'spider' - custom_settings = { - 'AUTOTHROTTLE_ENABLED': True - } - - crawler = Crawler(MySpider, {}) - enabled_exts = [e.__class__ for e in crawler.extensions.middlewares] - self.assertIn(AutoThrottle, enabled_exts) - - class SpiderLoaderWithWrongInterface(object): def unneeded_method(self):