Test request kwargs (copy, serialization)

This commit is contained in:
Eugenio Lacuesta 2019-01-09 10:40:03 -03:00
parent a67f1ce512
commit 770a501fb3
3 changed files with 14 additions and 1 deletions

View File

@ -40,8 +40,14 @@ class Request(object_ref):
self.dont_filter = dont_filter
self._meta = dict(meta) if meta else None
self._kwargs = dict(kwargs) if kwargs else None
self.flags = [] if flags is None else list(flags)
self.kwargs = dict(kwargs) if kwargs else None
@property
def kwargs(self):
if self._kwargs is None:
self._kwargs = {}
return self._kwargs
@property
def meta(self):

View File

@ -177,6 +177,7 @@ class RequestTest(unittest.TestCase):
r1 = self.request_class("http://www.example.com", flags=['f1', 'f2'],
callback=somecallback, errback=somecallback)
r1.meta['foo'] = 'bar'
r1.kwargs['key'] = 'value'
r2 = r1.copy()
# make sure copy does not propagate callbacks
@ -189,6 +190,10 @@ class RequestTest(unittest.TestCase):
assert r1.flags is not r2.flags, "flags must be a shallow copy, not identical"
self.assertEqual(r1.flags, r2.flags)
# make sure kwargs dict is shallow copied
assert r1.kwargs is not r2.kwargs, "kwargs must be a shallow copy, not identical"
self.assertEqual(r1.kwargs, r2.kwargs)
# make sure meta dict is shallow copied
assert r1.meta is not r2.meta, "meta must be a shallow copy, not identical"
self.assertEqual(r1.meta, r2.meta)

View File

@ -26,6 +26,7 @@ class RequestSerializationTest(unittest.TestCase):
encoding='latin-1',
priority=20,
meta={'a': 'b'},
kwargs={'k': 'v'},
flags=['testFlag'])
self._assert_serializes_ok(r, spider=self.spider)
@ -52,6 +53,7 @@ class RequestSerializationTest(unittest.TestCase):
self.assertEqual(r1.headers, r2.headers)
self.assertEqual(r1.cookies, r2.cookies)
self.assertEqual(r1.meta, r2.meta)
self.assertEqual(r1.kwargs, r2.kwargs)
self.assertEqual(r1._encoding, r2._encoding)
self.assertEqual(r1.priority, r2.priority)
self.assertEqual(r1.dont_filter, r2.dont_filter)