diff --git a/tests/test_closespider.py b/tests/test_closespider.py index 9a837350f..ecde301d1 100644 --- a/tests/test_closespider.py +++ b/tests/test_closespider.py @@ -13,12 +13,14 @@ from tests.spiders import ( class TestCloseSpider(TestCase): - def setUp(self): - self.mockserver = MockServer() - self.mockserver.__enter__() + @classmethod + def setUpClass(cls): + cls.mockserver = MockServer() + cls.mockserver.__enter__() - def tearDown(self): - self.mockserver.__exit__(None, None, None) + @classmethod + def tearDownClass(cls): + cls.mockserver.__exit__(None, None, None) @defer.inlineCallbacks def test_closespider_itemcount(self): diff --git a/tests/test_crawl.py b/tests/test_crawl.py index 1f81a6073..cd2a559a8 100644 --- a/tests/test_crawl.py +++ b/tests/test_crawl.py @@ -56,12 +56,14 @@ from tests.spiders import ( class CrawlTestCase(TestCase): - def setUp(self): - self.mockserver = MockServer() - self.mockserver.__enter__() + @classmethod + def setUpClass(cls): + cls.mockserver = MockServer() + cls.mockserver.__enter__() - def tearDown(self): - self.mockserver.__exit__(None, None, None) + @classmethod + def tearDownClass(cls): + cls.mockserver.__exit__(None, None, None) @defer.inlineCallbacks def test_follow_all(self): @@ -448,12 +450,14 @@ with multiples lines class CrawlSpiderTestCase(TestCase): - def setUp(self): - self.mockserver = MockServer() - self.mockserver.__enter__() + @classmethod + def setUpClass(cls): + cls.mockserver = MockServer() + cls.mockserver.__enter__() - def tearDown(self): - self.mockserver.__exit__(None, None, None) + @classmethod + def tearDownClass(cls): + cls.mockserver.__exit__(None, None, None) @defer.inlineCallbacks def _run_spider(self, spider_cls): diff --git a/tests/test_downloader_handlers.py b/tests/test_downloader_handlers.py index ae2030fe6..1549059f0 100644 --- a/tests/test_downloader_handlers.py +++ b/tests/test_downloader_handlers.py @@ -693,12 +693,14 @@ class Http11MockServerTestCase(unittest.TestCase): settings_dict: dict | None = None - def setUp(self): - self.mockserver = MockServer() - self.mockserver.__enter__() + @classmethod + def setUpClass(cls): + cls.mockserver = MockServer() + cls.mockserver.__enter__() - def tearDown(self): - self.mockserver.__exit__(None, None, None) + @classmethod + def tearDownClass(cls): + cls.mockserver.__exit__(None, None, None) @defer.inlineCallbacks def test_download_with_content_length(self): diff --git a/tests/test_downloaderslotssettings.py b/tests/test_downloaderslotssettings.py index 0bb143f69..4f8b005d7 100644 --- a/tests/test_downloaderslotssettings.py +++ b/tests/test_downloaderslotssettings.py @@ -50,13 +50,17 @@ class DownloaderSlotsSettingsTestSpider(MetaSpider): class CrawlTestCase(TestCase): - def setUp(self): - self.mockserver = MockServer() - self.mockserver.__enter__() - self.runner = CrawlerRunner() + @classmethod + def setUpClass(cls): + cls.mockserver = MockServer() + cls.mockserver.__enter__() - def tearDown(self): - self.mockserver.__exit__(None, None, None) + @classmethod + def tearDownClass(cls): + cls.mockserver.__exit__(None, None, None) + + def setUp(self): + self.runner = CrawlerRunner() @defer.inlineCallbacks def test_delay(self): diff --git a/tests/test_feedexport.py b/tests/test_feedexport.py index ae52a3e18..1620d2d41 100644 --- a/tests/test_feedexport.py +++ b/tests/test_feedexport.py @@ -636,13 +636,19 @@ class FeedExportTestBase(ABC, unittest.TestCase): filename = "".join(chars) return Path(self.temp_dir, inter_dir, filename) + @classmethod + def setUpClass(cls): + cls.mockserver = MockServer() + cls.mockserver.__enter__() + + @classmethod + def tearDownClass(cls): + cls.mockserver.__exit__(None, None, None) + def setUp(self): self.temp_dir = tempfile.mkdtemp() - self.mockserver = MockServer() - self.mockserver.__enter__() def tearDown(self): - self.mockserver.__exit__(None, None, None) shutil.rmtree(self.temp_dir, ignore_errors=True) @defer.inlineCallbacks diff --git a/tests/test_logformatter.py b/tests/test_logformatter.py index e5d077858..962692a31 100644 --- a/tests/test_logformatter.py +++ b/tests/test_logformatter.py @@ -262,9 +262,16 @@ class DropSomeItemsPipeline: class ShowOrSkipMessagesTestCase(TwistedTestCase): + @classmethod + def setUpClass(cls): + cls.mockserver = MockServer() + cls.mockserver.__enter__() + + @classmethod + def tearDownClass(cls): + cls.mockserver.__exit__(None, None, None) + def setUp(self): - self.mockserver = MockServer() - self.mockserver.__enter__() self.base_settings = { "LOG_LEVEL": "DEBUG", "ITEM_PIPELINES": { @@ -272,9 +279,6 @@ class ShowOrSkipMessagesTestCase(TwistedTestCase): }, } - def tearDown(self): - self.mockserver.__exit__(None, None, None) - @defer.inlineCallbacks def test_show_messages(self): crawler = get_crawler(ItemSpider, self.base_settings) diff --git a/tests/test_pipeline_crawl.py b/tests/test_pipeline_crawl.py index 9e1b1ab5b..84d714e5c 100644 --- a/tests/test_pipeline_crawl.py +++ b/tests/test_pipeline_crawl.py @@ -64,10 +64,16 @@ class FileDownloadCrawlTestCase(TestCase): "ed3f6538dc15d4d9179dae57319edc5f", } - def setUp(self): - self.mockserver = MockServer() - self.mockserver.__enter__() + @classmethod + def setUpClass(cls): + cls.mockserver = MockServer() + cls.mockserver.__enter__() + @classmethod + def tearDownClass(cls): + cls.mockserver.__exit__(None, None, None) + + def setUp(self): # prepare a directory for storing files self.tmpmediastore = Path(mkdtemp()) self.settings = { @@ -80,7 +86,6 @@ class FileDownloadCrawlTestCase(TestCase): def tearDown(self): shutil.rmtree(self.tmpmediastore) self.items = [] - self.mockserver.__exit__(None, None, None) def _on_item_scraped(self, item): self.items.append(item) diff --git a/tests/test_pipelines.py b/tests/test_pipelines.py index 5ab288c1a..222b19e7f 100644 --- a/tests/test_pipelines.py +++ b/tests/test_pipelines.py @@ -77,12 +77,14 @@ class ItemSpider(Spider): class PipelineTestCase(unittest.TestCase): - def setUp(self): - self.mockserver = MockServer() - self.mockserver.__enter__() + @classmethod + def setUpClass(cls): + cls.mockserver = MockServer() + cls.mockserver.__enter__() - def tearDown(self): - self.mockserver.__exit__(None, None, None) + @classmethod + def tearDownClass(cls): + cls.mockserver.__exit__(None, None, None) def _on_item_scraped(self, item): self.assertIsInstance(item, dict) diff --git a/tests/test_proxy_connect.py b/tests/test_proxy_connect.py index 26bd6332c..6ed7e93a6 100644 --- a/tests/test_proxy_connect.py +++ b/tests/test_proxy_connect.py @@ -62,14 +62,21 @@ def _wrong_credentials(proxy_url): class ProxyConnectTestCase(TestCase): + @classmethod + def setUpClass(cls): + cls.mockserver = MockServer() + cls.mockserver.__enter__() + + @classmethod + def tearDownClass(cls): + cls.mockserver.__exit__(None, None, None) + def setUp(self): try: import mitmproxy # noqa: F401 except ImportError: self.skipTest("mitmproxy is not installed") - self.mockserver = MockServer() - self.mockserver.__enter__() self._oldenv = os.environ.copy() self._proxy = MitmProxy() @@ -78,7 +85,6 @@ class ProxyConnectTestCase(TestCase): os.environ["http_proxy"] = proxy_url def tearDown(self): - self.mockserver.__exit__(None, None, None) self._proxy.stop() os.environ = self._oldenv diff --git a/tests/test_request_attribute_binding.py b/tests/test_request_attribute_binding.py index d65d74206..0072660a7 100644 --- a/tests/test_request_attribute_binding.py +++ b/tests/test_request_attribute_binding.py @@ -57,12 +57,14 @@ class AlternativeCallbacksMiddleware: class CrawlTestCase(TestCase): - def setUp(self): - self.mockserver = MockServer() - self.mockserver.__enter__() + @classmethod + def setUpClass(cls): + cls.mockserver = MockServer() + cls.mockserver.__enter__() - def tearDown(self): - self.mockserver.__exit__(None, None, None) + @classmethod + def tearDownClass(cls): + cls.mockserver.__exit__(None, None, None) @defer.inlineCallbacks def test_response_200(self): diff --git a/tests/test_request_cb_kwargs.py b/tests/test_request_cb_kwargs.py index b178c928b..a21cb43ff 100644 --- a/tests/test_request_cb_kwargs.py +++ b/tests/test_request_cb_kwargs.py @@ -154,12 +154,14 @@ class KeywordArgumentsSpider(MockServerSpider): class CallbackKeywordArgumentsTestCase(TestCase): maxDiff = None - def setUp(self): - self.mockserver = MockServer() - self.mockserver.__enter__() + @classmethod + def setUpClass(cls): + cls.mockserver = MockServer() + cls.mockserver.__enter__() - def tearDown(self): - self.mockserver.__exit__(None, None, None) + @classmethod + def tearDownClass(cls): + cls.mockserver.__exit__(None, None, None) @defer.inlineCallbacks def test_callback_kwargs(self): diff --git a/tests/test_request_left.py b/tests/test_request_left.py index ba1b70695..cf4c8a2d5 100644 --- a/tests/test_request_left.py +++ b/tests/test_request_left.py @@ -25,12 +25,14 @@ class SignalCatcherSpider(Spider): class TestCatching(TestCase): - def setUp(self): - self.mockserver = MockServer() - self.mockserver.__enter__() + @classmethod + def setUpClass(cls): + cls.mockserver = MockServer() + cls.mockserver.__enter__() - def tearDown(self): - self.mockserver.__exit__(None, None, None) + @classmethod + def tearDownClass(cls): + cls.mockserver.__exit__(None, None, None) @defer.inlineCallbacks def test_success(self): diff --git a/tests/test_signals.py b/tests/test_signals.py index 0df104600..1e693c094 100644 --- a/tests/test_signals.py +++ b/tests/test_signals.py @@ -21,13 +21,17 @@ class ItemSpider(Spider): class AsyncSignalTestCase(unittest.TestCase): - def setUp(self): - self.mockserver = MockServer() - self.mockserver.__enter__() - self.items = [] + @classmethod + def setUpClass(cls): + cls.mockserver = MockServer() + cls.mockserver.__enter__() - def tearDown(self): - self.mockserver.__exit__(None, None, None) + @classmethod + def tearDownClass(cls): + cls.mockserver.__exit__(None, None, None) + + def setUp(self): + self.items = [] async def _on_item_scraped(self, item): item = await get_from_asyncio_queue(item) diff --git a/tests/test_spidermiddleware_httperror.py b/tests/test_spidermiddleware_httperror.py index 01a2b4bb4..307054de7 100644 --- a/tests/test_spidermiddleware_httperror.py +++ b/tests/test_spidermiddleware_httperror.py @@ -172,12 +172,14 @@ class TestHttpErrorMiddlewareHandleAll(TestCase): class TestHttpErrorMiddlewareIntegrational(TrialTestCase): - def setUp(self): - self.mockserver = MockServer() - self.mockserver.__enter__() + @classmethod + def setUpClass(cls): + cls.mockserver = MockServer() + cls.mockserver.__enter__() - def tearDown(self): - self.mockserver.__exit__(None, None, None) + @classmethod + def tearDownClass(cls): + cls.mockserver.__exit__(None, None, None) @defer.inlineCallbacks def test_middleware_works(self):