mirror of
https://github.com/scrapy/scrapy.git
synced 2025-02-23 06:44:06 +00:00
* add flags to request * fxi test - add flags to request * fix test(2) - add flags to request * fix test(2) - add flags to request * Updated test to reqser with flags field of request * Updated documntation with flags field of request * fix test identation * fix test failed * make the change backward comptaible * remove unrequired spaces, fix documentation request flags * remove unrequired space * fx assert equal * flags default is empty list * Add flags to request * add flags to request * fxi test - add flags to request * fix test(2) - add flags to request * fix test(2) - add flags to request * Updated test to reqser with flags field of request * Updated documntation with flags field of request * fix test identation * fix test failed * make the change backward comptaible * remove unrequired spaces, fix documentation request flags * remove unrequired space * fx assert equal * flags default is empty list * add flags to request squashed commits
93 lines
3.1 KiB
Python
93 lines
3.1 KiB
Python
# -*- coding: utf-8 -*-
|
||
import unittest
|
||
|
||
from scrapy.http import Request, FormRequest
|
||
from scrapy.spiders import Spider
|
||
from scrapy.utils.reqser import request_to_dict, request_from_dict
|
||
|
||
|
||
class RequestSerializationTest(unittest.TestCase):
|
||
|
||
def setUp(self):
|
||
self.spider = TestSpider()
|
||
|
||
def test_basic(self):
|
||
r = Request("http://www.example.com")
|
||
self._assert_serializes_ok(r)
|
||
|
||
def test_all_attributes(self):
|
||
r = Request("http://www.example.com",
|
||
callback='parse_item',
|
||
errback='handle_error',
|
||
method="POST",
|
||
body=b"some body",
|
||
headers={'content-encoding': 'text/html; charset=latin-1'},
|
||
cookies={'currency': u'руб'},
|
||
encoding='latin-1',
|
||
priority=20,
|
||
meta={'a': 'b'},
|
||
flags=['testFlag'])
|
||
self._assert_serializes_ok(r)
|
||
|
||
def test_latin1_body(self):
|
||
r = Request("http://www.example.com", body=b"\xa3")
|
||
self._assert_serializes_ok(r)
|
||
|
||
def test_utf8_body(self):
|
||
r = Request("http://www.example.com", body=b"\xc2\xa3")
|
||
self._assert_serializes_ok(r)
|
||
|
||
def _assert_serializes_ok(self, request, spider=None):
|
||
d = request_to_dict(request, spider=spider)
|
||
request2 = request_from_dict(d, spider=spider)
|
||
self._assert_same_request(request, request2)
|
||
|
||
def _assert_same_request(self, r1, r2):
|
||
self.assertEqual(r1.__class__, r2.__class__)
|
||
self.assertEqual(r1.url, r2.url)
|
||
self.assertEqual(r1.callback, r2.callback)
|
||
self.assertEqual(r1.errback, r2.errback)
|
||
self.assertEqual(r1.method, r2.method)
|
||
self.assertEqual(r1.body, r2.body)
|
||
self.assertEqual(r1.headers, r2.headers)
|
||
self.assertEqual(r1.cookies, r2.cookies)
|
||
self.assertEqual(r1.meta, r2.meta)
|
||
self.assertEqual(r1._encoding, r2._encoding)
|
||
self.assertEqual(r1.priority, r2.priority)
|
||
self.assertEqual(r1.dont_filter, r2.dont_filter)
|
||
self.assertEqual(r1.flags, r2.flags)
|
||
|
||
def test_request_class(self):
|
||
r = FormRequest("http://www.example.com")
|
||
self._assert_serializes_ok(r, spider=self.spider)
|
||
r = CustomRequest("http://www.example.com")
|
||
self._assert_serializes_ok(r, spider=self.spider)
|
||
|
||
def test_callback_serialization(self):
|
||
r = Request("http://www.example.com", callback=self.spider.parse_item,
|
||
errback=self.spider.handle_error)
|
||
self._assert_serializes_ok(r, spider=self.spider)
|
||
|
||
def test_unserializable_callback1(self):
|
||
r = Request("http://www.example.com", callback=lambda x: x)
|
||
self.assertRaises(ValueError, request_to_dict, r)
|
||
self.assertRaises(ValueError, request_to_dict, r, spider=self.spider)
|
||
|
||
def test_unserializable_callback2(self):
|
||
r = Request("http://www.example.com", callback=self.spider.parse_item)
|
||
self.assertRaises(ValueError, request_to_dict, r)
|
||
|
||
|
||
class TestSpider(Spider):
|
||
name = 'test'
|
||
|
||
def parse_item(self, response):
|
||
pass
|
||
|
||
def handle_error(self, failure):
|
||
pass
|
||
|
||
|
||
class CustomRequest(Request):
|
||
pass
|