Files
python/python爬虫/scrapy-redis-0.9.1/tests/test_queue.py
T
2025-08-05 09:19:34 +08:00

39 lines
1.2 KiB
Python

from unittest import mock
from scrapy import Spider
from scrapy.http import Request
from scrapy_redis.queue import Base
class TestBaseQueue:
queue_cls = Base
def setup(self):
self.server = mock.Mock()
self.spider = Spider(name="foo")
self.spider.parse_method = lambda x: x
self.key = "key"
self.q = self.queue_cls(self.server, self.spider, self.key)
def test_encode_decode_requests(self, q=None):
if q is None:
q = self.q
req = Request(
"http://example.com", callback=self.spider.parse, meta={"foo": "bar"}
)
out = q._decode_request(q._encode_request(req))
assert req.url == out.url
assert req.meta == out.meta
assert req.callback == out.callback
def test_custom_serializer(self):
serializer = mock.Mock()
serializer.dumps = mock.Mock(side_effect=lambda x: x)
serializer.loads = mock.Mock(side_effect=lambda x: x)
q = Base(self.server, self.spider, self.key, serializer=serializer)
self.test_encode_decode_requests(q)
assert serializer.dumps.call_count == 1
assert serializer.loads.call_count == 1