diff --git a/swh/scheduler/tests/test_server.py b/swh/scheduler/tests/test_server.py
index c291d8169568f8cab69a2d7daa0fc25a580f0cae..989c91c00a481a9c9d6db37b533198a2fdb1c356 100644
--- a/swh/scheduler/tests/test_server.py
+++ b/swh/scheduler/tests/test_server.py
@@ -1,4 +1,4 @@
-# Copyright (C) 2019  The Software Heritage developers
+# Copyright (C) 2019-2020  The Software Heritage developers
 # See the AUTHORS file at the top-level directory of this distribution
 # License: GNU General Public License version 3, or any later version
 # See top-level LICENSE file for more information
@@ -33,40 +33,37 @@ def prepare_config_file(tmpdir, content, name="config.yml"):
     return str(config_path)
 
 
-def test_load_and_check_config_no_configuration():
+@pytest.mark.parametrize("scheduler_class", [None, ""])
+def test_load_and_check_config_no_configuration(scheduler_class):
     """Inexistent configuration files raises"""
-    with pytest.raises(EnvironmentError) as e:
-        load_and_check_config(None)
+    with pytest.raises(EnvironmentError, match="Configuration file must be defined"):
+        load_and_check_config(scheduler_class)
 
-    assert e.value.args[0] == "Configuration file must be defined"
 
+def test_load_and_check_config_inexistent_fil():
+    """Inexistent config filepath should raise"""
     config_path = "/some/inexistent/config.yml"
-    with pytest.raises(FileNotFoundError) as e:
+    expected_error = f"Configuration file {config_path} does not exist"
+    with pytest.raises(FileNotFoundError, match=expected_error):
         load_and_check_config(config_path)
 
-    assert e.value.args[0] == "Configuration file %s does not exist" % (config_path,)
-
 
 def test_load_and_check_config_wrong_configuration(tmpdir):
     """Wrong configuration raises"""
     config_path = prepare_config_file(tmpdir, "something: useless")
-    with pytest.raises(KeyError) as e:
+    with pytest.raises(KeyError, match="Missing '%scheduler' configuration"):
         load_and_check_config(config_path)
 
-    assert e.value.args[0] == "Missing '%scheduler' configuration"
-
 
 def test_load_and_check_config_remote_config_local_type_raise(tmpdir):
-    """'local' configuration without 'local' storage raises"""
+    """Configuration without 'local' storage is rejected"""
     config = {"scheduler": {"cls": "remote", "args": {}}}
     config_path = prepare_config_file(tmpdir, config)
-    with pytest.raises(ValueError) as e:
-        load_and_check_config(config_path, type="local")
-
-    assert (
-        e.value.args[0] == "The scheduler backend can only be started with a 'local'"
-        " configuration"
+    expected_error = (
+        "The scheduler backend can only be started with a 'local'" " configuration"
     )
+    with pytest.raises(ValueError, match=expected_error):
+        load_and_check_config(config_path, type="local")
 
 
 def test_load_and_check_config_local_incomplete_configuration(tmpdir):
@@ -86,13 +83,10 @@ def test_load_and_check_config_local_incomplete_configuration(tmpdir):
             source = c["scheduler"]
         source.pop(key)
         config_path = prepare_config_file(tmpdir, c)
-        with pytest.raises(KeyError) as e:
+        expected_error = f"Invalid configuration; missing '{key}' config entry"
+        with pytest.raises(KeyError, match=expected_error):
             load_and_check_config(config_path)
 
-        assert (
-            e.value.args[0] == "Invalid configuration; missing '%s' config entry" % key
-        )
-
 
 def test_load_and_check_config_local_config_fine(tmpdir):
     """Local configuration is fine"""
@@ -103,7 +97,7 @@ def test_load_and_check_config_local_config_fine(tmpdir):
 
 
 def test_load_and_check_config_remote_config_fine(tmpdir):
-    """'Remote configuration is fine"""
+    """Remote configuration is fine"""
     config = {"scheduler": {"cls": "remote", "args": {}}}
     config_path = prepare_config_file(tmpdir, config)
     cfg = load_and_check_config(config_path, type="any")