-
Notifications
You must be signed in to change notification settings - Fork 1.6k
/
Copy pathtest_queue.py
38 lines (30 loc) · 1.17 KB
/
test_queue.py
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
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