def test_empty_feed(self):
for partial_settings in itertools.chain.from_iterable(
itertools.combinations(self.feed_settings.items(), r)
for r in range(1, len(self.feed_settings))):
partial_settings = dict(partial_settings)
undefined_settings = [name.upper() for name in set(self.feed_settings) - set(partial_settings)]
with self.assertRaisesRegexp(NotConfigured,
'({})'.format('|'.join(undefined_settings))
if len(undefined_settings) > 1 else undefined_settings[0],
msg='The feed file, title, link and description must be specified, but the absence of {} is allowed'
.format(undefined_settings)):
with CrawlerContext(**partial_settings):
pass
with self.assertRaises(CloseSpider):
feed_settings = dict(self.feed_settings)
feed_settings['feed_file'] = 'non/existent/filepath'
with CrawlerContext(**feed_settings):
pass
with CrawlerContext(**self.feed_settings):
pass
with open(self.feed_settings['feed_file']) as data, \
open(os.path.join(os.path.dirname(__file__), 'expected_rss', 'empty_feed.rss')) as expected:
self.assertUnorderedXmlEquivalentOutputs(data.read(), expected.read())
评论列表
文章目录