mirror of
https://github.com/scrapy/scrapy.git
synced 2025-02-24 18:04:15 +00:00
54 lines
1.9 KiB
Python
54 lines
1.9 KiB
Python
from twisted.trial import unittest
|
|
from twisted.internet import defer
|
|
|
|
from scrapy.utils.testsite import SiteTest
|
|
from scrapy.utils.testproc import ProcessTest
|
|
|
|
|
|
class ShellTest(ProcessTest, SiteTest, unittest.TestCase):
|
|
|
|
command = 'shell'
|
|
|
|
@defer.inlineCallbacks
|
|
def test_empty(self):
|
|
_, out, _ = yield self.execute(['-c', 'item'])
|
|
assert '{}' in out
|
|
|
|
@defer.inlineCallbacks
|
|
def test_response_body(self):
|
|
_, out, _ = yield self.execute([self.url('/text'), '-c', 'response.body'])
|
|
assert 'Works' in out
|
|
|
|
@defer.inlineCallbacks
|
|
def test_response_type_text(self):
|
|
_, out, _ = yield self.execute([self.url('/text'), '-c', 'type(response)'])
|
|
assert 'TextResponse' in out
|
|
|
|
@defer.inlineCallbacks
|
|
def test_response_type_html(self):
|
|
_, out, _ = yield self.execute([self.url('/html'), '-c', 'type(response)'])
|
|
assert 'HtmlResponse' in out
|
|
|
|
@defer.inlineCallbacks
|
|
def test_response_selector_html(self):
|
|
xpath = 'response.xpath("//p[@class=\'one\']/text()").extract()[0]'
|
|
_, out, _ = yield self.execute([self.url('/html'), '-c', xpath])
|
|
self.assertEqual(out.strip(), 'Works')
|
|
|
|
@defer.inlineCallbacks
|
|
def test_response_encoding_gb18030(self):
|
|
_, out, _ = yield self.execute([self.url('/enc-gb18030'), '-c', 'response.encoding'])
|
|
self.assertEqual(out.strip(), 'gb18030')
|
|
|
|
@defer.inlineCallbacks
|
|
def test_redirect(self):
|
|
_, out, _ = yield self.execute([self.url('/redirect'), '-c', 'response.url'])
|
|
assert out.strip().endswith('/redirected')
|
|
|
|
@defer.inlineCallbacks
|
|
def test_request_replace(self):
|
|
url = self.url('/text')
|
|
code = "fetch('{0}') or fetch(response.request.replace(method='POST'))"
|
|
errcode, out, _ = yield self.execute(['-c', code.format(url)])
|
|
self.assertEqual(errcode, 0, out)
|