diff --git a/swh/model/fields/compound.py b/swh/model/fields/compound.py
index 412ebdb1f8bacd0a11c9f14319470d9756f74406..00eb25250f37065761afd9ead8f9ee5fe2e12e0f 100644
--- a/swh/model/fields/compound.py
+++ b/swh/model/fields/compound.py
@@ -104,7 +104,7 @@ def validate_all_keys(value, keys):
     if missing_keys:
         missing_fields = ', '.join(sorted(missing_keys))
         raise ValidationError(
-            'Missing mandatory fields %(missing_fields)',
+            'Missing mandatory fields %(missing_fields)s',
             params={'missing_fields': missing_fields},
             code='missing-mandatory-field'
         )
@@ -118,9 +118,9 @@ def validate_any_key(value, keys):
     if not present_keys:
         missing_fields = ', '.join(sorted(keys))
         raise ValidationError(
-                'Must contain one of the alternative fields %(missing_fields)',
-                params={'missing_fields': missing_fields},
-                code='missing-alternative-field',
-            )
+            'Must contain one of the alternative fields %(missing_fields)s',
+            params={'missing_fields': missing_fields},
+            code='missing-alternative-field',
+        )
 
     return True
diff --git a/swh/model/fields/simple.py b/swh/model/fields/simple.py
index 0f8b305726b9f6720a4be46f954289d1f628d68a..302099780df9bab00ec2176223ed8fdd2db05199 100644
--- a/swh/model/fields/simple.py
+++ b/swh/model/fields/simple.py
@@ -69,7 +69,7 @@ def validate_enum(value, expected_values):
     """Validate that value is contained in expected_values"""
     if value not in expected_values:
         raise ValidationError(
-            'Unexpected value %(value)s, expected one of %(expected_values)',
+            'Unexpected value %(value)s, expected one of %(expected_values)s',
             params={
                 'value': value,
                 'expected_values': ', '.join(sorted(expected_values)),
diff --git a/swh/model/tests/fields/test_compound.py b/swh/model/tests/fields/test_compound.py
index db840a919832082b2af173c56d8e13cc3f3129b2..b6e13b6c33a7f975102d2faea9635e12f0e07ca8 100644
--- a/swh/model/tests/fields/test_compound.py
+++ b/swh/model/tests/fields/test_compound.py
@@ -78,6 +78,7 @@ class ValidateCompound(unittest.TestCase):
             compound.validate_any_key(self.test_value, self.missing_keys)
 
         exc = cm.exception
+        self.assertIsInstance(str(exc), str)
         self.assertEqual(exc.code, 'missing-alternative-field')
         self.assertEqual(exc.params['missing_fields'],
                          ', '.join(sorted(self.missing_keys)))
@@ -93,6 +94,7 @@ class ValidateCompound(unittest.TestCase):
             compound.validate_all_keys(self.test_value, self.missing_keys)
 
         exc = cm.exception
+        self.assertIsInstance(str(exc), str)
         self.assertEqual(exc.code, 'missing-mandatory-field')
         self.assertEqual(exc.params['missing_fields'],
                          ', '.join(sorted(self.missing_keys)))
@@ -102,6 +104,7 @@ class ValidateCompound(unittest.TestCase):
                                        self.present_keys | self.missing_keys)
 
         exc = cm.exception
+        self.assertIsInstance(str(exc), str)
         self.assertEqual(exc.code, 'missing-mandatory-field')
         self.assertEqual(exc.params['missing_fields'],
                          ', '.join(sorted(self.missing_keys)))
@@ -119,6 +122,7 @@ class ValidateCompound(unittest.TestCase):
                                              self.test_value_wrong_type)
 
         exc = cm.exception
+        self.assertIsInstance(str(exc), str)
         self.assertEqual(exc.code, 'model-unexpected-type')
         self.assertEqual(exc.params['model'], self.test_model)
         self.assertEqual(exc.params['type'],
@@ -136,6 +140,7 @@ class ValidateCompound(unittest.TestCase):
         #     'mandatory_key2': [ValidationError('model-field-mandatory')],
         # })
         exc = cm.exception
+        self.assertIsInstance(str(exc), str)
         for key in self.test_value_missing_keys:
             nested_key = exc.error_dict[key]
             self.assertIsInstance(nested_key, list)
@@ -155,6 +160,7 @@ class ValidateCompound(unittest.TestCase):
             )
 
         exc = cm.exception
+        self.assertIsInstance(str(exc), str)
         self.assertNotIn(NON_FIELD_ERRORS, exc.error_dict)
 
     @istest
@@ -172,6 +178,7 @@ class ValidateCompound(unittest.TestCase):
         # })
 
         exc = cm.exception
+        self.assertIsInstance(str(exc), str)
         self.assertEquals(set(exc.error_dict.keys()), {NON_FIELD_ERRORS})
 
         non_field_errors = exc.error_dict[NON_FIELD_ERRORS]
@@ -196,6 +203,7 @@ class ValidateCompound(unittest.TestCase):
         # })
 
         exc = cm.exception
+        self.assertIsInstance(str(exc), str)
         self.assertEquals(set(exc.error_dict.keys()), {'str'})
 
         str_errors = exc.error_dict['str']
@@ -219,6 +227,7 @@ class ValidateCompound(unittest.TestCase):
         # })
 
         exc = cm.exception
+        self.assertIsInstance(str(exc), str)
         self.assertEquals(set(exc.error_dict.keys()), {'int'})
 
         int_errors = exc.error_dict['int']
diff --git a/swh/model/tests/fields/test_hashes.py b/swh/model/tests/fields/test_hashes.py
index b79678e5fe5510f8012f5ff576a9152d00995f05..0ef303f034bceb0611c139a6b9191f4fd6dfb0d8 100644
--- a/swh/model/tests/fields/test_hashes.py
+++ b/swh/model/tests/fields/test_hashes.py
@@ -49,6 +49,7 @@ class ValidateHashes(unittest.TestCase):
             hashes.validate_hash(self.valid_str_hashes['sha1'], hash_type)
 
         exc = cm.exception
+        self.assertIsInstance(str(exc), str)
         self.assertEqual(exc.code, 'unexpected-hash-type')
         self.assertEqual(exc.params['hash_type'], hash_type)
 
@@ -63,6 +64,7 @@ class ValidateHashes(unittest.TestCase):
                 hashes.validate_hash(value, hash_type)
 
             exc = cm.exception
+            self.assertIsInstance(str(exc), str)
             self.assertEqual(exc.code, 'unexpected-hash-length')
             self.assertEqual(exc.params['hash_type'], hash_type)
             self.assertEqual(exc.params['length'], len(value))
@@ -78,6 +80,7 @@ class ValidateHashes(unittest.TestCase):
                 hashes.validate_hash(value, hash_type)
 
             exc = cm.exception
+            self.assertIsInstance(str(exc), str)
             self.assertEqual(exc.code, 'unexpected-hash-length')
             self.assertEqual(exc.params['hash_type'], hash_type)
             self.assertEqual(exc.params['length'], len(value))
@@ -93,6 +96,7 @@ class ValidateHashes(unittest.TestCase):
                 hashes.validate_hash(value, hash_type)
 
             exc = cm.exception
+            self.assertIsInstance(str(exc), str)
             self.assertEqual(exc.code, 'unexpected-hash-contents')
             self.assertEqual(exc.params['hash_type'], hash_type)
             self.assertEqual(exc.params['unexpected_chars'], '\xa2, \xc3')
@@ -107,6 +111,7 @@ class ValidateHashes(unittest.TestCase):
             hashes.validate_hash(self.bad_hash, 'sha1')
 
         exc = cm.exception
+        self.assertIsInstance(str(exc), str)
         self.assertEqual(exc.code, 'unexpected-hash-value-type')
         self.assertEqual(exc.params['type'], self.bad_hash.__class__.__name__)
 
@@ -122,6 +127,7 @@ class ValidateHashes(unittest.TestCase):
             hashes.validate_sha1(self.bad_hash)
 
         exc = cm.exception
+        self.assertIsInstance(str(exc), str)
         self.assertEqual(exc.code, 'unexpected-hash-value-type')
         self.assertEqual(exc.params['type'], self.bad_hash.__class__.__name__)
 
@@ -136,6 +142,7 @@ class ValidateHashes(unittest.TestCase):
             hashes.validate_sha1_git(self.bad_hash)
 
         exc = cm.exception
+        self.assertIsInstance(str(exc), str)
         self.assertEqual(exc.code, 'unexpected-hash-value-type')
         self.assertEqual(exc.params['type'], self.bad_hash.__class__.__name__)
 
@@ -150,5 +157,6 @@ class ValidateHashes(unittest.TestCase):
             hashes.validate_sha256(self.bad_hash)
 
         exc = cm.exception
+        self.assertIsInstance(str(exc), str)
         self.assertEqual(exc.code, 'unexpected-hash-value-type')
         self.assertEqual(exc.params['type'], self.bad_hash.__class__.__name__)
diff --git a/swh/model/tests/fields/test_simple.py b/swh/model/tests/fields/test_simple.py
index 9af424f41b20b6161e4e77681f97f473be9271d7..6fa2918d8f76954b7b69efb1eadf734503e5befd 100644
--- a/swh/model/tests/fields/test_simple.py
+++ b/swh/model/tests/fields/test_simple.py
@@ -39,6 +39,7 @@ class ValidateSimple(unittest.TestCase):
             simple.validate_int(self.valid_str)
 
         exc = cm.exception
+        self.assertIsInstance(str(exc), str)
         self.assertEqual(exc.code, 'unexpected-type')
         self.assertEqual(exc.params['expected_type'], 'Integral')
         self.assertEqual(exc.params['type'], 'str')
@@ -53,6 +54,7 @@ class ValidateSimple(unittest.TestCase):
             simple.validate_str(self.valid_int)
 
         exc = cm.exception
+        self.assertIsInstance(str(exc), str)
         self.assertEqual(exc.code, 'unexpected-type')
         self.assertEqual(exc.params['expected_type'], 'str')
         self.assertEqual(exc.params['type'], 'int')
@@ -61,6 +63,7 @@ class ValidateSimple(unittest.TestCase):
             simple.validate_str(self.valid_bytes)
 
         exc = cm.exception
+        self.assertIsInstance(str(exc), str)
         self.assertEqual(exc.code, 'unexpected-type')
         self.assertEqual(exc.params['expected_type'], 'str')
         self.assertEqual(exc.params['type'], 'bytes')
@@ -75,6 +78,7 @@ class ValidateSimple(unittest.TestCase):
             simple.validate_bytes(self.valid_int)
 
         exc = cm.exception
+        self.assertIsInstance(str(exc), str)
         self.assertEqual(exc.code, 'unexpected-type')
         self.assertEqual(exc.params['expected_type'], 'bytes')
         self.assertEqual(exc.params['type'], 'int')
@@ -83,6 +87,7 @@ class ValidateSimple(unittest.TestCase):
             simple.validate_bytes(self.valid_str)
 
         exc = cm.exception
+        self.assertIsInstance(str(exc), str)
         self.assertEqual(exc.code, 'unexpected-type')
         self.assertEqual(exc.params['expected_type'], 'bytes')
         self.assertEqual(exc.params['type'], 'str')
@@ -99,6 +104,7 @@ class ValidateSimple(unittest.TestCase):
             simple.validate_datetime(self.valid_str)
 
         exc = cm.exception
+        self.assertIsInstance(str(exc), str)
         self.assertEqual(exc.code, 'unexpected-type')
         self.assertEqual(exc.params['expected_type'], 'one of datetime, Real')
         self.assertEqual(exc.params['type'], 'str')
@@ -109,6 +115,7 @@ class ValidateSimple(unittest.TestCase):
             simple.validate_datetime(self.invalid_datetime_notz)
 
         exc = cm.exception
+        self.assertIsInstance(str(exc), str)
         self.assertEqual(exc.code, 'datetime-without-tzinfo')
 
     @istest
@@ -122,6 +129,7 @@ class ValidateSimple(unittest.TestCase):
             simple.validate_enum(self.invalid_enum_value, self.enum_values)
 
         exc = cm.exception
+        self.assertIsInstance(str(exc), str)
         self.assertEqual(exc.code, 'unexpected-value')
         self.assertEqual(exc.params['value'], self.invalid_enum_value)
         self.assertEqual(exc.params['expected_values'],