1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60
|
from __future__ import with_statement
import warnings
from twisted.trial import unittest
from scrapy.spider import BaseSpider
from scrapy.contrib.spiders.init import InitSpider
from scrapy.contrib.spiders import CrawlSpider, XMLFeedSpider, CSVFeedSpider, SitemapSpider
class BaseSpiderTest(unittest.TestCase):
spider_class = BaseSpider
def setUp(self):
warnings.simplefilter("always")
def tearDown(self):
warnings.resetwarnings()
def test_base_spider(self):
spider = self.spider_class("example.com")
self.assertEqual(spider.name, 'example.com')
self.assertEqual(spider.start_urls, [])
def test_spider_args(self):
"""Constructor arguments are assigned to spider attributes"""
spider = self.spider_class('example.com', foo='bar')
self.assertEqual(spider.foo, 'bar')
def test_spider_without_name(self):
"""Constructor arguments are assigned to spider attributes"""
self.assertRaises(ValueError, self.spider_class)
self.assertRaises(ValueError, self.spider_class, somearg='foo')
class InitSpiderTest(BaseSpiderTest):
spider_class = InitSpider
class XMLFeedSpiderTest(BaseSpiderTest):
spider_class = XMLFeedSpider
class CSVFeedSpiderTest(BaseSpiderTest):
spider_class = CSVFeedSpider
class CrawlSpiderTest(BaseSpiderTest):
spider_class = CrawlSpider
class SitemapSpiderTest(BaseSpiderTest):
spider_class = SitemapSpider
if __name__ == '__main__':
unittest.main()
|