Skip to content

Commit

Permalink
tests: Refactor test_delayed_request_middleware.py
Browse files Browse the repository at this point in the history
- Move expectation into parametrize
- Add newlines around assertions, to make it easier to scan for assertions
- Use simpler variable names if they are unambiguous (middleware, manager, actual)
- Remove extra f-string
  • Loading branch information
jpmckinney committed Feb 9, 2021
1 parent 389d0b4 commit 5bda0d9
Showing 1 changed file with 18 additions and 17 deletions.
35 changes: 18 additions & 17 deletions tests/middlewares/test_delayed_request_middleware.py
Expand Up @@ -8,36 +8,37 @@
from tests import spider_with_crawler


@pytest.mark.parametrize('meta', [
None,
{'wait_time': 1}
@pytest.mark.parametrize('meta,expected', [
(None, type(None)),
({'wait_time': 1}, Deferred),
])
def test_middleware_output(meta):
def test_middleware_output(meta, expected):
spider = spider_with_crawler()
delay_middleware = DelayedRequestMiddleware()
request = Request(f'http://example.com', meta=meta)
returned_request = delay_middleware.process_request(request, spider)
if not meta:
assert returned_request is None
else:
assert isinstance(returned_request, Deferred)
middleware = DelayedRequestMiddleware()
request = Request('http://example.com', meta=meta)
actual = middleware.process_request(request, spider)

assert isinstance(actual, expected)


def test_middleware_wait():

def mock_download_func(spider, request):
def download_func(spider, request):
return request

spider = spider_with_crawler()
downloader_manager = DownloaderMiddlewareManager.from_crawler(spider.crawler)
manager = DownloaderMiddlewareManager.from_crawler(spider.crawler)
request = Request('http://example.com', meta={'wait_time': 1})
# we send the request to all the download middlewares including the delayed one
downloaded = downloader_manager.download(mock_download_func, request, spider)
# We send the request to all the downloader middlewares, including the delayed request middleware.
downloaded = manager.download(download_func, request, spider)

assert isinstance(downloaded, Deferred)

# https://github.com/scrapy/scrapy/blob/28262d4b241744aa7c090702db9a89411e3bbf9a/tests/test_downloadermiddleware.py#L36
results = []
downloaded.addBoth(results.append)
test = TestCase()
test._wait(downloaded)
returned_request = results[0]
assert returned_request.url == request.url

assert len(results) == 1
assert results[0].url == request.url

0 comments on commit 5bda0d9

Please sign in to comment.