diff --git a/test/py/ganeti.block.drbd_unittest.py b/test/py/ganeti.block.drbd_unittest.py
index cc30a09c6d14d93dcbaf6d3d5bd69af72eb987ec..87b3d031026ae8409ea2694ee9e53275fe682991 100755
--- a/test/py/ganeti.block.drbd_unittest.py
+++ b/test/py/ganeti.block.drbd_unittest.py
@@ -375,5 +375,47 @@ class TestDRBD8Status(testutils.GanetiTestCase):
                       filename=self.proc80ev_data)
 
 
+class TestDRBD8Construction(testutils.GanetiTestCase):
+  def setUp(self):
+    """Read in txt data"""
+    testutils.GanetiTestCase.setUp(self)
+    self.proc80_info = \
+      drbd_info.DRBD8Info.CreateFromFile(
+        filename=testutils.TestDataFilename("proc_drbd8.txt"))
+    self.proc83_info = \
+      drbd_info.DRBD8Info.CreateFromFile(
+        filename=testutils.TestDataFilename("proc_drbd83.txt"))
+    self.proc84_info = \
+      drbd_info.DRBD8Info.CreateFromFile(
+        filename=testutils.TestDataFilename("proc_drbd84.txt"))
+
+    self.test_unique_id = ("hosta.com", 123, "host2.com", 123, 0, "secret")
+
+  @testutils.patch_object(drbd_info.DRBD8Info, "CreateFromFile")
+  def testConstructionWith80Data(self, mock_create_from_file):
+    mock_create_from_file.return_value = self.proc80_info
+
+    inst = drbd.DRBD8(self.test_unique_id, [], 123, {})
+    self.assertEqual(inst._show_info_cls, drbd_info.DRBD83ShowInfo)
+    self.assertTrue(isinstance(inst._cmd_gen, drbd_cmdgen.DRBD83CmdGenerator))
+
+  @testutils.patch_object(drbd_info.DRBD8Info, "CreateFromFile")
+  def testConstructionWith83Data(self, mock_create_from_file):
+    mock_create_from_file.return_value = self.proc83_info
+
+    inst = drbd.DRBD8(self.test_unique_id, [], 123, {})
+    self.assertEqual(inst._show_info_cls, drbd_info.DRBD83ShowInfo)
+    self.assertTrue(isinstance(inst._cmd_gen, drbd_cmdgen.DRBD83CmdGenerator))
+
+  @testutils.patch_object(drbd_info.DRBD8Info, "CreateFromFile")
+  def testConstructionWith84Data(self, mock_create_from_file):
+    mock_create_from_file.return_value = self.proc84_info
+
+    inst = drbd.DRBD8(self.test_unique_id, [], 123, {})
+    self.assertEqual(inst._show_info_cls, drbd_info.DRBD84ShowInfo)
+    # FIXME: add assertion for right class here!
+    self.assertEqual(inst._cmd_gen, None)
+
+
 if __name__ == "__main__":
   testutils.GanetiTestProgram()
diff --git a/test/py/testutils.py b/test/py/testutils.py
index 545939346fdd89d3734c3ade7704a1acdc709b5d..8249847f3312602b5981ac9c91c6693990c7c070 100644
--- a/test/py/testutils.py
+++ b/test/py/testutils.py
@@ -209,6 +209,21 @@ class GanetiTestCase(unittest.TestCase):
     return fname
 
 
+def patch_object(*args, **kwargs):
+  """Unified patch_object for various versions of Python Mock.
+
+  Different Python Mock versions provide incompatible versions of patching an
+  object. More recent versions use _patch_object, older ones used patch_object.
+  This function unifies the different variations.
+
+  """
+  import mock
+  try:
+    return mock._patch_object(*args, **kwargs)
+  except AttributeError:
+    return mock.patch_object(*args, **kwargs)
+
+
 def UnifyValueType(data):
   """Converts all tuples into lists.