scrapy/tests/test_command_fetch.py

36 lines
1.2 KiB
Python

from tests.mockserver.http import MockServer
from tests.test_commands import TestProjectBase
class TestFetchCommand(TestProjectBase):
@classmethod
def setup_class(cls):
cls.mockserver = MockServer()
cls.mockserver.__enter__()
@classmethod
def teardown_class(cls):
cls.mockserver.__exit__(None, None, None)
def test_output(self):
_, out, _ = self.proc("fetch", self.mockserver.url("/text"))
assert out.strip() == "Works"
def test_redirect_default(self):
_, out, _ = self.proc("fetch", self.mockserver.url("/redirect"))
assert out.strip() == "Redirected here"
def test_redirect_disabled(self):
_, _, err = self.proc(
"fetch", "--no-redirect", self.mockserver.url("/redirect-no-meta-refresh")
)
err = err.strip()
assert "downloader/response_status_count/302" in err, err
assert "downloader/response_status_count/200" not in err, err
def test_headers(self):
_, out, _ = self.proc("fetch", self.mockserver.url("/text"), "--headers")
out = out.replace("\r", "") # required on win32
assert "Server: TwistedWeb" in out, out
assert "Content-Type: text/plain" in out