From 5bda0d9bea12c2927557224fc6fcc6fdb09175ee Mon Sep 17 00:00:00 2001 From: James McKinney <26463+jpmckinney@users.noreply.github.com> Date: Tue, 9 Feb 2021 16:14:07 -0500 Subject: [PATCH] tests: Refactor test_delayed_request_middleware.py - 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 --- .../test_delayed_request_middleware.py | 35 ++++++++++--------- 1 file changed, 18 insertions(+), 17 deletions(-) diff --git a/tests/middlewares/test_delayed_request_middleware.py b/tests/middlewares/test_delayed_request_middleware.py index 964eda37b..90c9cebd7 100644 --- a/tests/middlewares/test_delayed_request_middleware.py +++ b/tests/middlewares/test_delayed_request_middleware.py @@ -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