diff --git a/tests/test_administration.py b/tests/test_administration.py
index 50aa906d00bf13f13d5a5569a8042013e65138e0..0d4f4901c084474c0d703f2100f8ca16a0b1ea45 100644
--- a/tests/test_administration.py
+++ b/tests/test_administration.py
@@ -28,9 +28,12 @@
 
 from caosdb import (administration as admin, get_config)
 from nose.tools import assert_true, assert_equal, assert_is_not_none, with_setup, assert_raises
-from caosdb.exceptions import (ClientErrorException, TransactionError,
-                               AuthorizationException, LoginFailedException)
+from caosdb.exceptions import (ClientErrorException,
+                               HTTPAuthorizationException,
+                               LoginFailedException,
+                               ResourceNotFoundException)
 from caosdb.connection.connection import get_connection, configure_connection
+from pytest import raises
 
 test_role = "test_role"
 test_user = "test_user"
@@ -104,11 +107,9 @@ def test_insert_role_success():
 @with_setup(setup, teardown)
 def test_insert_role_failure_permission():
     switch_to_normal_user()
-    with assert_raises(AuthorizationException) as cm:
+    with raises(HTTPAuthorizationException) as cm:
         admin._insert_role(name=test_role, description=test_role_desc)
-    assert_equal(
-        cm.exception.msg,
-        "You are not permitted to insert a new role.")
+    assert cm.value.msg == "You are not permitted to insert a new role."
 
 
 @with_setup(setup, teardown)
@@ -135,18 +136,16 @@ def test_update_role_success():
 def test_update_role_failure_permissions():
     test_insert_role_success()
     switch_to_normal_user()
-    with assert_raises(AuthorizationException) as cm:
+    with raises(HTTPAuthorizationException) as cm:
         admin._update_role(name=test_role, description=test_role_desc + "asdf")
-    assert_equal(
-        cm.exception.msg,
-        "You are not permitted to update this role.")
+    assert cm.value.msg == "You are not permitted to update this role."
 
 
 @with_setup(setup, teardown)
 def test_update_role_failure_non_existing():
-    with assert_raises(TransactionError) as cm:
+    with raises(ResourceNotFoundException) as cm:
         admin._update_role(name=test_role, description=test_role_desc + "asdf")
-    assert_equal(cm.exception.msg, "Role does not exist.")
+    assert cm.value.msg == "Role does not exist."
 
 
 @with_setup(setup, teardown)
@@ -159,18 +158,16 @@ def test_delete_role_success():
 def test_delete_role_failure_permissions():
     test_insert_role_success()
     switch_to_normal_user()
-    with assert_raises(AuthorizationException) as cm:
+    with raises(HTTPAuthorizationException) as cm:
         admin._delete_role(name=test_role)
-    assert_equal(
-        cm.exception.msg,
-        "You are not permitted to delete this role.")
+    assert cm.value.msg == "You are not permitted to delete this role."
 
 
 @with_setup(setup, teardown)
 def test_delete_role_failure_non_existing():
-    with assert_raises(TransactionError) as cm:
+    with raises(ResourceNotFoundException) as cm:
         admin._delete_role(name=test_role)
-    assert_equal(cm.exception.msg, "Role does not exist.")
+    assert cm.value.msg == "Role does not exist."
 
 
 @with_setup(setup, teardown)
@@ -184,18 +181,16 @@ def test_retrieve_role_success():
 def test_retrieve_role_failure_permission():
     test_insert_role_success()
     switch_to_normal_user()
-    with assert_raises(AuthorizationException) as cm:
+    with raises(HTTPAuthorizationException) as cm:
         admin._retrieve_role(name=test_role)
-    assert_equal(
-        cm.exception.msg,
-        "You are not permitted to retrieve this role.")
+    assert cm.value.msg == "You are not permitted to retrieve this role."
 
 
 @with_setup(setup, teardown)
 def test_retrieve_role_failure_non_existing():
-    with assert_raises(TransactionError) as cm:
+    with raises(ResourceNotFoundException) as cm:
         admin._retrieve_role(name=test_role)
-    assert_equal(cm.exception.msg, "Role does not exist.")
+    assert cm.value.msg == "Role does not exist."
 
 
 @with_setup(setup, teardown)
@@ -214,24 +209,22 @@ def test_set_permissions_success():
 def test_set_permissions_failure_permissions():
     test_insert_role_success()
     switch_to_normal_user()
-    with assert_raises(AuthorizationException) as cm:
+    with raises(HTTPAuthorizationException) as cm:
         admin._set_permissions(
             role=test_role, permission_rules=[
                 admin.PermissionRule(
                     "Grant", "BLA:BLA:BLA")])
-    assert_equal(
-        cm.exception.msg,
-        "You are not permitted to set this role's permissions.")
+    assert cm.value.msg == "You are not permitted to set this role's permissions."
 
 
 @with_setup(setup, teardown)
 def test_set_permissions_failure_non_existing():
-    with assert_raises(TransactionError) as cm:
+    with raises(ResourceNotFoundException) as cm:
         admin._set_permissions(
             role=test_role, permission_rules=[
                 admin.PermissionRule(
                     "Grant", "BLA:BLA:BLA")])
-    assert_equal(cm.exception.msg, "Role does not exist.")
+    assert cm.value.msg == "Role does not exist."
 
 
 @with_setup(setup, teardown)
@@ -246,18 +239,16 @@ def test_get_permissions_success():
 def test_get_permissions_failure_permissions():
     test_set_permissions_success()
     switch_to_normal_user()
-    with assert_raises(AuthorizationException) as cm:
+    with raises(HTTPAuthorizationException) as cm:
         admin._get_permissions(role=test_role)
-    assert_equal(
-        cm.exception.msg,
-        "You are not permitted to retrieve this role's permissions.")
+    assert cm.value.msg == "You are not permitted to retrieve this role's permissions."
 
 
 @with_setup(setup, teardown)
 def test_get_permissions_failure_non_existing():
-    with assert_raises(TransactionError) as cm:
+    with raises(ResourceNotFoundException) as cm:
         admin._get_permissions(role="non-existing-role")
-    assert_equal(cm.exception.msg, "Role does not exist.")
+    assert cm.value.msg == "Role does not exist."
 
 
 @with_setup(setup, teardown)
@@ -272,18 +263,16 @@ def test_get_roles_success():
 def test_get_roles_failure_permissions():
     test_insert_role_success()
     switch_to_normal_user()
-    with assert_raises(AuthorizationException) as cm:
+    with raises(HTTPAuthorizationException) as cm:
         admin._get_roles(username=test_user)
-    assert_equal(
-        cm.exception.msg,
-        "You are not permitted to retrieve this user's roles.")
+    assert cm.value.msg == "You are not permitted to retrieve this user's roles."
 
 
 @with_setup(setup, teardown)
 def test_get_roles_failure_non_existing():
-    with assert_raises(TransactionError) as cm:
+    with raises(ResourceNotFoundException) as cm:
         admin._get_roles(username="non-existing-user")
-    assert_equal(cm.exception.msg, "User does not exist.")
+    assert cm.value.msg == "User does not exist."
 
 
 @with_setup(setup, teardown)
@@ -311,11 +300,9 @@ def test_set_roles_failure_permissions():
     roles = {test_role}
     roles.union(roles_old)
     switch_to_normal_user()
-    with assert_raises(AuthorizationException) as cm:
+    with raises(HTTPAuthorizationException) as cm:
         admin._set_roles(username=test_user, roles=roles_old)
-    assert_equal(
-        cm.exception.msg,
-        "You are not permitted to set this user's roles.")
+    assert cm.value.msg == "You are not permitted to set this user's roles."
 
 
 def test_set_roles_failure_non_existing_role():
@@ -328,9 +315,9 @@ def test_set_roles_failure_non_existing_role():
 def test_set_roles_failure_non_existing_user():
     test_insert_role_success()
     roles = {test_role}
-    with assert_raises(TransactionError) as cm:
+    with raises(ResourceNotFoundException) as cm:
         admin._set_roles(username="non-existing-user", roles=roles)
-    assert_equal(cm.exception.msg, "User does not exist.")
+    assert cm.value.msg == "User does not exist."
 
 
 @with_setup(setup, teardown)
@@ -346,16 +333,14 @@ def test_insert_user_success():
 @with_setup(setup, teardown)
 def test_insert_user_failure_permissions():
     switch_to_normal_user()
-    with assert_raises(AuthorizationException) as cm:
+    with raises(HTTPAuthorizationException) as cm:
         admin._insert_user(
             name=test_user,
             password="secret1P!",
             status="ACTIVE",
             email="email@example.com",
             entity=None)
-    assert_equal(
-        cm.exception.msg,
-        "You are not permitted to insert a new user.")
+    assert cm.value.msg == "You are not permitted to insert a new user."
 
 
 @with_setup(setup, teardown)
@@ -376,18 +361,16 @@ def test_delete_user_success():
 def test_delete_user_failure_permissions():
     test_insert_user_success()
     switch_to_normal_user()
-    with assert_raises(AuthorizationException) as cm:
+    with raises(HTTPAuthorizationException) as cm:
         admin._delete_user(name="non_existing_user")
-    assert_equal(
-        cm.exception.msg,
-        "You are not permitted to delete this user.")
+    assert cm.value.msg == "You are not permitted to delete this user."
 
 
 @with_setup(setup, teardown)
 def test_delete_user_failure_non_existing():
-    with assert_raises(TransactionError) as cm:
+    with raises(ResourceNotFoundException) as cm:
         admin._delete_user(name="non_existing_user")
-    assert_equal(cm.exception.msg, "User does not exist.")
+    assert cm.value.msg == "User does not exist."
 
 
 @with_setup(setup, teardown)
@@ -459,15 +442,12 @@ def test_update_user_success_password():
 
 @with_setup(setup, teardown)
 def test_update_user_failure_permissions_status():
-    assert_is_not_none(
-        admin._insert_user(
-            name=test_user + "2",
-            password="secret1P!",
-            status="INACTIVE",
-            email="email@example.com",
-            entity=None))
+    assert admin._insert_user(name=test_user + "2",
+                              password="secret1P!",
+                              status="INACTIVE",
+                              email="email@example.com", entity=None) is not None
     switch_to_normal_user()
-    with assert_raises(AuthorizationException) as cm:
+    with raises(HTTPAuthorizationException) as cm:
         admin._update_user(
             realm=None,
             name=test_user + "2",
@@ -475,22 +455,16 @@ def test_update_user_failure_permissions_status():
             status="ACTIVE",
             email=None,
             entity=None)
-    assert_equal(
-        cm.exception.msg,
-        "You are not permitted to update this user.")
+    assert cm.value.msg == "You are not permitted to update this user."
 
 
 @with_setup(setup, teardown)
 def test_update_user_failure_permissions_email():
-    assert_is_not_none(
-        admin._insert_user(
-            name=test_user + "2",
-            password="secret1P!",
-            status="ACTIVE",
-            email="email@example.com",
-            entity=None))
+    assert admin._insert_user(name=test_user + "2",
+                              password="secret1P!", status="ACTIVE",
+                              email="email@example.com", entity=None) is not None
     switch_to_normal_user()
-    with assert_raises(AuthorizationException) as cm:
+    with raises(HTTPAuthorizationException) as cm:
         admin._update_user(
             realm=None,
             name=test_user + "2",
@@ -498,22 +472,16 @@ def test_update_user_failure_permissions_email():
             status=None,
             email="newemail@example.com",
             entity=None)
-    assert_equal(
-        cm.exception.msg,
-        "You are not permitted to update this user.")
+    assert cm.value.msg == "You are not permitted to update this user."
 
 
 @with_setup(setup, teardown)
 def test_update_user_failure_permissions_entity():
-    assert_is_not_none(
-        admin._insert_user(
-            name=test_user + "2",
-            password="secret1P!",
-            status="ACTIVE",
-            email="email@example.com",
-            entity=None))
+    assert admin._insert_user(name=test_user + "2",
+                              password="secret1P!", status="ACTIVE",
+                              email="email@example.com", entity=None) is not None
     switch_to_normal_user()
-    with assert_raises(AuthorizationException) as cm:
+    with raises(HTTPAuthorizationException) as cm:
         admin._update_user(
             realm=None,
             name=test_user + "2",
@@ -521,22 +489,16 @@ def test_update_user_failure_permissions_entity():
             status=None,
             email=None,
             entity=21)
-    assert_equal(
-        cm.exception.msg,
-        "You are not permitted to update this user.")
+    assert cm.value.msg == "You are not permitted to update this user."
 
 
 @with_setup(setup, teardown)
 def test_update_user_failure_permissions_password():
-    assert_is_not_none(
-        admin._insert_user(
-            name=test_user + "2",
-            password="secret1P!",
-            status="ACTIVE",
-            email="email@example.com",
-            entity=None))
+    assert admin._insert_user(name=test_user + "2",
+                              password="secret1P!", status="ACTIVE",
+                              email="email@example.com", entity=None) is not None
     switch_to_normal_user()
-    with assert_raises(AuthorizationException) as cm:
+    with raises(HTTPAuthorizationException) as cm:
         admin._update_user(
             realm=None,
             name=test_user + "2",
@@ -544,14 +506,12 @@ def test_update_user_failure_permissions_password():
             status=None,
             email=None,
             entity=None)
-    assert_equal(
-        cm.exception.msg,
-        "You are not permitted to update this user.")
+    assert cm.value.msg == "You are not permitted to update this user."
 
 
 @with_setup(setup, teardown)
 def test_update_user_failure_non_existing_user():
-    with assert_raises(TransactionError) as cm:
+    with raises(ResourceNotFoundException) as cm:
         admin._update_user(
             realm=None,
             name="non-existing-user",
@@ -559,19 +519,15 @@ def test_update_user_failure_non_existing_user():
             status="ACTIVE",
             email="email@example.com",
             entity=None)
-    assert_equal(cm.exception.msg, "User does not exist.")
+    assert cm.value.msg == "User does not exist."
 
 
 @with_setup(setup, teardown)
 def test_update_user_failure_non_existing_entity():
-    assert_is_not_none(
-        admin._insert_user(
-            name=test_user + "2",
-            password="secret1P!",
-            status="ACTIVE",
-            email="email@example.com",
-            entity=None))
-    with assert_raises(ClientErrorException) as cm:
+    assert admin._insert_user(name=test_user + "2",
+                              password="secret1P!", status="ACTIVE",
+                              email="email@example.com", entity=None) is not None
+    with raises(ClientErrorException) as cm:
         admin._update_user(
             realm=None,
             name=test_user + "2",
@@ -579,7 +535,7 @@ def test_update_user_failure_non_existing_entity():
             status=None,
             email=None,
             entity=100000)
-    assert_equal(cm.exception.msg, "Entity does not exist.")
+    assert cm.value.msg == "Entity does not exist."
 
 
 @with_setup(setup, teardown)
@@ -592,18 +548,16 @@ def test_retrieve_user_success():
 def test_retrieve_user_failure_permissions():
     test_insert_user_success()
     switch_to_normal_user()
-    with assert_raises(AuthorizationException) as cm:
+    with raises(HTTPAuthorizationException) as cm:
         admin._retrieve_user(realm=None, name=test_user + "2")
-    assert_equal(
-        cm.exception.msg,
-        "You are not permitted to retrieve this user.")
+    assert cm.value.msg == "You are not permitted to retrieve this user."
 
 
 @with_setup(setup, teardown)
 def test_retrieve_user_failure_non_existing():
-    with assert_raises(TransactionError) as cm:
+    with raises(ResourceNotFoundException) as cm:
         admin._retrieve_user(realm=None, name="non_existing")
-    assert_equal(cm.exception.msg, "User does not exist.")
+    assert cm.value.msg == "User does not exist."
 
 
 @with_setup(setup, teardown)
diff --git a/tests/test_boolean.py b/tests/test_boolean.py
index 60ad1cbd80d34a6892fcdd3304e0b401840a02e2..37cb5beda4aab071c330d4426a1f768f1c6e1d97 100644
--- a/tests/test_boolean.py
+++ b/tests/test_boolean.py
@@ -29,7 +29,8 @@
 import caosdb as h
 # @UnresolvedImport
 from nose.tools import assert_true, assert_equal, assert_false, assert_raises
-from caosdb.exceptions import EntityError
+from caosdb.exceptions import TransactionError
+from pytest import raises
 
 
 def test_property():
@@ -126,7 +127,8 @@ def test_record():
         rec3 = h.Record(
             name="SimpleRecord3").add_parent(rt).add_property(
             p.name, value="BLABLA")
-        assert_raises(EntityError, rec3.insert)
+        with raises(TransactionError):
+            rec3.insert()
 
         assert_false(rec3.is_valid())
         assert_equal(
diff --git a/tests/test_datatype_inheritance.py b/tests/test_datatype_inheritance.py
index eba41766c8a989c6abefe335ab488ccdbea716f6..292576f132c844502813cd848aebdfc7c1f161c9 100644
--- a/tests/test_datatype_inheritance.py
+++ b/tests/test_datatype_inheritance.py
@@ -28,7 +28,8 @@ from caosdb.connection.connection import get_connection
 # @UnresolvedImport
 from nose.tools import assert_is_not_none, assert_true, assert_equal, with_setup
 
-from caosdb.exceptions import EntityError
+from caosdb.exceptions import TransactionError
+from pytest import raises
 
 
 def setup():
@@ -150,12 +151,11 @@ def test_datatype_overriding_update():
             str("TEXT").lower(),
             rt.get_properties()[0].datatype.lower())
 
-        try:
+        with raises(TransactionError) as te:
             p.datatype = "INT"
             p.update()
-            raise AssertionError("This should raise an EntityError!")
-        except EntityError as e:
-            assert_equal("Unknown datatype.", e.msg)
+        
+        assert "Unknown datatype." == te.value.get_errors()[0].msg
 
         p.datatype = "INTEGER"
         p.update()