diff --git a/tests/test_error_stuff.py b/tests/test_error_stuff.py
index fb6ccf9d5f8d92b517e93bb33e64ab8434b14b9f..296f58d07b196616167101a30b8bcef712b713e9 100644
--- a/tests/test_error_stuff.py
+++ b/tests/test_error_stuff.py
@@ -129,245 +129,185 @@ def test_insertion_with_invalid_parents():
 
 
 def test_insertion_with_invalid_properties():
-    import caosdb as h
-    # @UnresolvedImport
-    from nose.tools import assert_false, assert_true, assert_is_not_none, assert_equal
-
-    try:
-        try:
-            h.execute_query("FIND NoTypeProperty").delete()
-        except BaseException:
-            pass
+    with pytest.raises(TransactionError) as te:
         p = h.Property(
-            name="NoTypeProperty",
+            name="TestNoTypeProperty",
             datatype="Text").add_property(
             id=-1)
         p.insert(raise_exception_on_error=True)
-        raise AssertionError(
-            "This should raise an UnqualifiedPropertiesError.")
-    except EntityError as e:
-        assert_true(isinstance(e, UnqualifiedPropertiesError))
-        assert_is_not_none(e.get_entity())
-        assert_equal(e.get_entity().name, p.name)
-        assert_true(e.get_entity().has_errors())
-        assert_true(p.has_errors())
-        assert_false(p.is_valid())
-        assert_false(e.get_entity().is_valid())
-    finally:
-        try:
-            p.delete()
-        except BaseException:
-            pass
+    # TransactionError with ContainerError with
+    # UnqualifiedPropertiesError
+    upe = te.value.get_errors()[0].get_errors()[0]
+    assert isinstance(upe, UnqualifiedPropertiesError)
+    assert not upe.get_entity() is None
+    assert upe.get_entity().name == p.name
+    assert upe.get_entity().has_errors()
+    assert p.has_errors()
+    assert not p.is_valid()
+    assert not e.get_entity().is_valid()
 
 
 def test_entity_does_not_exist():
-    import caosdb as h
-    # @UnresolvedImport
-    from nose.tools import assert_true, assert_false, assert_equal, assert_is_not_none
+    """When retrieving a container with existing and non-existing
+    entities, only those that don't exist should cause
+    EntityDoesNotExistErrors.
 
-    try:
-        p1 = h.Property(
-            name="Non-ExistentProperty1").retrieve(raise_exception_on_error=False)
-        p2 = h.Property(
-            name="Non-ExistentProperty2").retrieve(raise_exception_on_error=False)
-        p3 = h.Property(
-            name="Non-ExistentProperty3").retrieve(raise_exception_on_error=False)
-        assert_false(p1.is_valid())
-        assert_true(p1.id is None or p1.id < 0)
-        assert_false(p2.is_valid())
-        assert_true(p2.id is None or p2.id < 0)
-        assert_false(p3.is_valid())
-        assert_true(p3.id is None or p3.id < 0)
-
-        pe = h.Property(name="ExistentProperty", datatype="text").insert()
-
-        c = h.Container().extend(
-            [
-                h.Property(
-                    name="Non-ExistentProperty1"),
-                h.Property(
-                    name="Non-ExistentProperty2"),
-                h.Property(
-                    name="Non-ExistentProperty3"),
-                h.Property(
-                    name="ExistentProperty")])
-
-        try:
-            c.retrieve()
-        except EntityDoesNotExistError as e:
-            assert_equal(3, len(e.get_entities()))
-            for entity in e.get_entities():
-                assert_is_not_none(entity.name)
-                assert_true(entity.name.startswith("Non-ExistentProperty"))
-    finally:
-        try:
-            pe.delete()
-        except BaseException:
-            pass
-
-
-def test_insert_existent_entity():
-    import caosdb as h
-    # @UnresolvedImport
-    from nose.tools import assert_true, assert_false, assert_equal, assert_is_not_none
-
-    try:
-        p1 = h.Property(
-            name="Non-ExistentProperty1").retrieve(raise_exception_on_error=False)
-        p2 = h.Property(
-            name="Non-ExistentProperty2").retrieve(raise_exception_on_error=False)
-        p3 = h.Property(
-            name="Non-ExistentProperty3").retrieve(raise_exception_on_error=False)
-        assert_false(p1.is_valid())
-        assert_true(p1.id is None or p1.id < 0)
-        assert_false(p2.is_valid())
-        assert_true(p2.id is None or p2.id < 0)
-        assert_false(p3.is_valid())
-        assert_true(p3.id is None or p3.id < 0)
-
-        pe = h.Property(name="ExistentProperty", datatype="text").insert()
-        assert_true(pe.is_valid())
-
-        c = h.Container().extend(
-            [
-                h.Property(
-                    name="Non-ExistentProperty1",
-                    datatype="text"),
-                h.Property(
-                    name="Non-ExistentProperty2",
-                    datatype="text"),
-                h.Property(
-                    name="Non-ExistentProperty3",
-                    datatype="text"),
-                h.Property(
-                    name="ExistentProperty",
-                    datatype="text")])
-
-        try:
-            c.insert(unique=True)
-        except UniqueNamesError as e:
-            assert_equal(1, len(e.get_entities()))
-            for entity in e.get_entities():
-                assert_is_not_none(entity.name)
-                assert_equal(pe.name, entity.name)
-
-    finally:
-        try:
-            c.delete()
-        except BaseException:
-            pass
-        try:
-            pe.delete()
-        except BaseException:
-            pass
-        try:
-            p3.delete()
-        except BaseException:
-            pass
-        try:
-            p2.delete()
-        except BaseException:
-            pass
-        try:
-            p1.delete()
-        except BaseException:
-            pass
-
-
-def test_double_insertion():
-    import caosdb as h
-    from nose.tools import assert_true, assert_equal, assert_is_not_none  # @UnresolvedImport
-
-    c1 = h.Container()
-    try:
-        c1.append(
+    """
+    p1 = h.Property(name="TestNon-ExistentProperty1").retrieve(
+        raise_exception_on_error=False)
+    p2 = h.Property(name="TestNon-ExistentProperty2").retrieve(
+        raise_exception_on_error=False)
+    p3 = h.Property(name="TestNon-ExistentProperty3").retrieve(
+        raise_exception_on_error=False)
+    # None of them should exist
+    assert not p1.is_valid()
+    assert (p1.id is None or p1.id < 0)
+    assert not p2.is_valid()
+    assert (p2.id is None or p2.id < 0)
+    assert not p3.is_valid()
+    assert (p3.id is None or p3.id < 0)
+
+    pe = h.Property(name="TestExistentProperty", datatype="text").insert()
+
+    c = h.Container().extend(
+        [
             h.Property(
-                name="SimpleTextProperty",
-                description="simple text property (from test_error_stuff.py)",
-                datatype='text'))
-        c1.append(
+                name="TestNon-ExistentProperty1"),
             h.Property(
-                name="SimpleDoubleProperty",
-                description="simple double property (from test_error_stuff.py)",
-                datatype='double'))
-        c1.append(
+                name="TestNon-ExistentProperty2"),
             h.Property(
-                name="SimpleIntegerProperty",
-                description="simple integer property (from test_error_stuff.py)",
-                datatype='integer'))
-        c1.append(
+                name="TestNon-ExistentProperty3"),
             h.Property(
-                name="SimpleDatetimeProperty",
-                description="simple datetime property (from test_error_stuff.py)",
-                datatype='datetime'))
-
-        c1.append(
-            h.RecordType(
-                name="SimpleRecordType",
-                description="simple recordType (from test_error_stuff.py)") .add_property(
-                name='SimpleTextProperty') .add_property(
-                name='SimpleDoubleProperty') .add_property(
-                    name='SimpleIntegerProperty') .add_property(
-                        name='SimpleDatetimeProperty'))
-
-        c1.insert()
-
-        c2 = h.Container()
-        c2.append(
+                name="TestExistentProperty")])
+
+    with pytest.raises(TransactionError) as te:
+        c.retrieve()
+    te = te.value
+    assert te.has_error(EntityDoesNotExistError)
+    assert not pe in te.get_all_entities()
+    for p in (p1, p2, p3):
+        assert p in te.get_all_entities()
+
+
+def test_insert_existent_entity():
+    """Insertion of an already existing entity should cause a
+    UniqueNamesError.
+
+    """
+    p1 = h.Property(name="TestNon-ExistentProperty1").retrieve(
+        raise_exception_on_error=False)
+    p2 = h.Property(name="TestNon-ExistentProperty2").retrieve(
+        raise_exception_on_error=False)
+    p3 = h.Property(name="TestNon-ExistentProperty3").retrieve(
+        raise_exception_on_error=False)
+    # None of them should exist
+    assert not p1.is_valid()
+    assert (p1.id is None or p1.id < 0)
+    assert not p2.is_valid()
+    assert (p2.id is None or p2.id < 0)
+    assert not p3.is_valid()
+    assert (p3.id is None or p3.id < 0)
+
+    pe = h.Property(name="TestExistentProperty", datatype="text").insert()
+    assert pe.is_valid()
+
+    c = h.Container().extend(
+        [
             h.Property(
-                name="SimpleTextProperty",
-                description="simple text property (from test_error_stuff.py)",
-                datatype='text'))
-        c2.append(
+                name="TestNon-ExistentProperty1",
+                datatype="text"),
             h.Property(
-                name="SimpleDoubleProperty",
-                description="simple double property (from test_error_stuff.py)",
-                datatype='double'))
-        c2.append(
+                name="TestNon-ExistentProperty2",
+                datatype="text"),
             h.Property(
-                name="SimpleIntegerProperty",
-                description="simple integer property (from test_error_stuff.py)",
-                datatype='integer'))
-        c2.append(
+                name="TestNon-ExistentProperty3",
+                datatype="text"),
             h.Property(
-                name="SimpleDatetimeProperty",
-                description="simple datetime property (from test_error_stuff.py)",
-                datatype='datetime'))
-
-        c2.append(
-            h.RecordType(
-                name="SimpleRecordType",
-                description="simple recordType (from test_error_stuff.py)") .add_property(
-                name='SimpleTextProperty') .add_property(
-                name='SimpleDoubleProperty') .add_property(
-                    name='SimpleIntegerProperty') .add_property(
-                        name='SimpleDatetimeProperty'))
-        try:
-            c2.insert()
-        except TransactionError as te:
-            assert_true(isinstance(te, EntityError))
-            assert_true(isinstance(te, UniqueNamesError))
-            assert_true(hasattr(te, 'get_errors'))
-            assert_is_not_none(te.get_errors)
-            assert_is_not_none(te.get_errors())
-            assert_true(hasattr(te, 'get_error'))
-            assert_is_not_none(te.get_error)
-            assert_is_not_none(te.get_error())
-            assert_true(hasattr(te, 'get_entities'))
-            assert_is_not_none(te.get_entities)
-            assert_is_not_none(te.get_entities())
-            assert_equal(5, len(te.get_entities()))
-            assert_true(hasattr(te, 'get_container'))
-            assert_is_not_none(te.get_container)
-            assert_is_not_none(te.get_container())
-            assert_equal(c2, te.get_container())
-
-    finally:
-        try:
-            c2.delete()
-        except BaseException:
-            pass
-        try:
-            c1.delete()
-        except BaseException:
-            pass
+                name="TestExistentProperty",
+                datatype="text")])
+
+    with pytest.raises(TransActionError) as te:
+        c.insert(unique=True)
+    te = te.value
+    assert te.has_error(UniqueNamesError)
+    une = te.get_errors()[0].get_errors()[0]
+    assert len(une.get_entities) == 1
+    assert not une.get_entity() is None
+    assert pe.name == une.get_entity().name
+    for p in (p1, p2, p3):
+        assert not p in te.get_all_entities()
+
+
+def test_double_insertion():
+    c1 = h.Container()
+
+    c1.append(
+        h.Property(
+            name="TestSimpleTextProperty",
+            description="simple text property (from test_error_stuff.py)",
+            datatype='text'))
+    c1.append(
+        h.Property(
+            name="TestSimpleDoubleProperty",
+            description="simple double property (from test_error_stuff.py)",
+            datatype='double'))
+    c1.append(
+        h.Property(
+            name="TestSimpleIntegerProperty",
+            description="simple integer property (from test_error_stuff.py)",
+            datatype='integer'))
+    c1.append(
+        h.Property(
+            name="TestSimpleDatetimeProperty",
+            description="simple datetime property (from test_error_stuff.py)",
+            datatype='datetime'))
+
+    c1.append(
+        h.RecordType(
+            name="TestSimpleRecordType",
+            description="simple recordType (from test_error_stuff.py)").add_property(
+                name='TestSimpleTextProperty').add_property(
+                    name='TestSimpleDoubleProperty').add_property(
+                        name='TestSimpleIntegerProperty').add_property(
+                            name='TestSimpleDatetimeProperty'))
+
+    c1.insert()
+
+    c2 = h.Container()
+    c2.append(
+        h.Property(
+            name="TestSimpleTextProperty",
+            description="simple text property (from test_error_stuff.py)",
+            datatype='text'))
+    c2.append(
+        h.Property(
+            name="TestSimpleDoubleProperty",
+            description="simple double property (from test_error_stuff.py)",
+            datatype='double'))
+    c2.append(
+        h.Property(
+            name="TestSimpleIntegerProperty",
+            description="simple integer property (from test_error_stuff.py)",
+            datatype='integer'))
+    c2.append(
+        h.Property(
+            name="TestSimpleDatetimeProperty",
+            description="simple datetime property (from test_error_stuff.py)",
+            datatype='datetime'))
+
+    c2.append(
+        h.RecordType(
+            name="TestSimpleRecordType",
+            description="simple recordType (from test_error_stuff.py)").add_property(
+                name='TestSimpleTextProperty').add_property(
+                    name='TestSimpleDoubleProperty').add_property(
+                        name='TestSimpleIntegerProperty').add_property(
+                            name='TestSimpleDatetimeProperty'))
+    with pytest.raises(TransActionError) as te:
+        c2.insert()
+    te = te.value
+    assert te.has_error(UniqueNamesError)
+    # c2 caused the ContainerError
+    assert te.get_errors()[0].get_entity() == c2
+    # exactly 5 faulty entities in c2
+    assert len(te.get_errors()[0].get_entities()) == 5