diff --git a/product/ERP5Type/tests/ERP5TypeTestCase.py b/product/ERP5Type/tests/ERP5TypeTestCase.py
index d9749aa6b1c0c2a4c305d49cef40ef4bf8bb8d0e..13c359b13760f8f8079f8c0e1193a0f643da8b22 100644
--- a/product/ERP5Type/tests/ERP5TypeTestCase.py
+++ b/product/ERP5Type/tests/ERP5TypeTestCase.py
@@ -917,7 +917,7 @@ class ERP5TypeTestCase(ProcessingNodeTestCase, PortalTestCase):
                 from Products import DeadlockDebugger
               except ImportError:
                 pass
-              self.serverhost, self.serverport = self.startZServer()
+              self.serverhost, self.serverport = self.startZServer(verbose=True)
               self._registerNode(distributing=1, processing=1)
 
             self._updateConnectionStrings()
diff --git a/product/ERP5Type/tests/ProcessingNodeTestCase.py b/product/ERP5Type/tests/ProcessingNodeTestCase.py
index 9fe916b54e949fe916dba7d2e1b7ed513523cae8..a3db11841978e370692b4b8b8ac8b3d716e841f6 100644
--- a/product/ERP5Type/tests/ProcessingNodeTestCase.py
+++ b/product/ERP5Type/tests/ProcessingNodeTestCase.py
@@ -85,16 +85,24 @@ class ProcessingNodeTestCase(backportUnittest.TestCase, ZopeTestCase.TestCase):
       pass
     Lifetime.graceful_shutdown_loop()
 
-  def startZServer(self):
+  def startZServer(self, verbose=False):
     """Start HTTP ZServer in background"""
     utils = ZopeTestCase.utils
     if utils._Z2HOST is None:
+      _print = lambda hs: verbose and ZopeTestCase._print(
+        "Running %s server at %s:%s\n" % (
+          hs.server_protocol, hs.server_name, hs.server_port))
       try:
         hs = createZServer()
       except RuntimeError, e:
         ZopeTestCase._print(str(e))
       else:
         utils._Z2HOST, utils._Z2PORT = hs.server_name, hs.server_port
+        _print(hs)
+        try:
+          _print(createZServer(zserver_type='webdav'))
+        except RuntimeError, e:
+          ZopeTestCase._print(str(e))
         t = Thread(target=Lifetime.loop)
         t.setDaemon(1)
         t.start()
diff --git a/product/ERP5Type/tests/utils.py b/product/ERP5Type/tests/utils.py
index 1e88df213f1a36d7c6b5215fa41068e6446d6ad3..15a76ff50a9739d745e23165c599dd84699acb2c 100644
--- a/product/ERP5Type/tests/utils.py
+++ b/product/ERP5Type/tests/utils.py
@@ -297,19 +297,25 @@ def parseListeningAddress(host_port=None, default_host='127.0.0.1'):
   raise RuntimeError("Can't find free port (tried ports %s)\n"
                      % ', '.join(map(str, port_list)))
 
-def createZServer(log=os.devnull):
-  from ZServer import logger, zhttp_server, zhttp_handler
-  lg = logger.file_logger(log)
-  class new_zhttp_server:
+def createZServer(log=os.devnull, zserver_type='http'):
+  import ZServer
+  if zserver_type == 'http':
+    zserver_class, zhandler_class = ZServer.zhttp_server, ZServer.zhttp_handler
+  elif zserver_type == 'webdav':
+    from ZServer.HTTPServer import zwebdav_server as zserver_class
+    from ZServer.WebDAVSrcHandler import WebDAVSrcHandler as zhandler_class
+  else:
+    raise NotImplementedError
+  lg = ZServer.logger.file_logger(log)
+  class new_zserver(zserver_class):
     # I can't use __new__ because zhttp_handler is an old-style class :(
     def __init__(self):
-      self.__class__ = zhttp_server
+      self.__class__, = self.__class__.__bases__
   for ip, port in parseListeningAddress(os.environ.get('zserver')):
-    hs = new_zhttp_server()
+    hs = new_zserver()
     try:
       hs.__init__(ip, port, resolver=None, logger_object=lg)
-      hs.install_handler(zhttp_handler(module='Zope2', uri_base=''))
-      sys.stderr.write("Running ZServer at %s:%s\n" % (ip, port))
+      hs.install_handler(zhandler_class(module='Zope2', uri_base=''))
       return hs
     except socket.error, e:
       if e[0] != errno.EADDRINUSE: