1
0
mirror of https://github.com/scrapy/scrapy.git synced 2025-03-13 20:04:50 +00:00
scrapy/tests/test_spiderstate.py
2022-11-29 11:30:46 -03:00

46 lines
1.4 KiB
Python

from datetime import datetime
from pathlib import Path
import shutil
from twisted.trial import unittest
from scrapy.extensions.spiderstate import SpiderState
from scrapy.spiders import Spider
from scrapy.exceptions import NotConfigured
from scrapy.utils.test import get_crawler
class SpiderStateTest(unittest.TestCase):
def test_store_load(self):
jobdir = self.mktemp()
Path(jobdir).mkdir()
try:
spider = Spider(name="default")
dt = datetime.now()
ss = SpiderState(jobdir)
ss.spider_opened(spider)
spider.state["one"] = 1
spider.state["dt"] = dt
ss.spider_closed(spider)
spider2 = Spider(name="default")
ss2 = SpiderState(jobdir)
ss2.spider_opened(spider2)
self.assertEqual(spider.state, {"one": 1, "dt": dt})
ss2.spider_closed(spider2)
finally:
shutil.rmtree(jobdir)
def test_state_attribute(self):
# state attribute must be present if jobdir is not set, to provide a
# consistent interface
spider = Spider(name="default")
ss = SpiderState()
ss.spider_opened(spider)
self.assertEqual(spider.state, {})
ss.spider_closed(spider)
def test_not_configured(self):
crawler = get_crawler(Spider)
self.assertRaises(NotConfigured, SpiderState.from_crawler, crawler)