浏览代码

Refs #32416 -- Added LiveServerThread.server_class to ease subclassing.

Chris Jerdonek 4 年之前
父节点
当前提交
91c243f80f
共有 2 个文件被更改,包括 23 次插入1 次删除
  1. 7 1
      django/test/testcases.py
  2. 16 0
      tests/servers/test_liveserverthread.py

+ 7 - 1
django/test/testcases.py

@@ -1448,6 +1448,8 @@ class _MediaFilesHandler(FSFilesHandler):
 class LiveServerThread(threading.Thread):
     """Thread for running a live http server while the tests are running."""
 
+    server_class = ThreadedWSGIServer
+
     def __init__(self, host, static_handler, connections_override=None, port=0):
         self.host = host
         self.port = port
@@ -1484,7 +1486,11 @@ class LiveServerThread(threading.Thread):
             connections.close_all()
 
     def _create_server(self):
-        return ThreadedWSGIServer((self.host, self.port), QuietWSGIRequestHandler, allow_reuse_address=False)
+        return self.server_class(
+            (self.host, self.port),
+            QuietWSGIRequestHandler,
+            allow_reuse_address=False,
+        )
 
     def terminate(self):
         if hasattr(self, 'httpd'):

+ 16 - 0
tests/servers/test_liveserverthread.py

@@ -1,5 +1,6 @@
 from django.db import DEFAULT_DB_ALIAS, connections
 from django.test import LiveServerTestCase, TestCase
+from django.test.testcases import LiveServerThread
 
 
 class LiveServerThreadTest(TestCase):
@@ -23,3 +24,18 @@ class LiveServerThreadTest(TestCase):
             self.assertFalse(conn.is_usable())
         finally:
             conn.dec_thread_sharing()
+
+    def test_server_class(self):
+        class FakeServer:
+            def __init__(*args, **kwargs):
+                pass
+
+        class MyServerThread(LiveServerThread):
+            server_class = FakeServer
+
+        class MyServerTestCase(LiveServerTestCase):
+            server_thread_class = MyServerThread
+
+        thread = MyServerTestCase._create_server_thread(None)
+        server = thread._create_server()
+        self.assertIs(type(server), FakeServer)