[itemloader-errors] updated Compose and MapCompose messages and added tests

#3836
This commit is contained in:
Mabel Villalba 2019-06-25 17:00:40 +02:00
parent a753ea7e16
commit b1e348b281
2 changed files with 44 additions and 4 deletions

View File

@ -28,10 +28,12 @@ class MapCompose(object):
try:
next_values += arg_to_iter(func(v))
except Exception as e:
type_name = type(func).__name__
_name = (func.__name__ if type_name == 'function'
else type_name)
raise ValueError("Error in MapCompose with "
"function %s value=%r error='%s: %s'" %
(func.__name__, value,
type(e).__name__, str(e)))
(_name, value, type(e).__name__, str(e)))
values = next_values
return values
@ -55,10 +57,12 @@ class Compose(object):
try:
value = func(value)
except Exception as e:
type_name = type(func).__name__
_name = (func.__name__ if type_name == 'function'
else type_name)
raise ValueError("Error in Compose with "
"function %s value=%r error='%s: %s'" %
(func.__name__, value,
type(e).__name__, str(e)))
(_name, value, type(e).__name__, str(e)))
return value

View File

@ -456,6 +456,42 @@ class BasicItemLoaderTest(unittest.TestCase):
'title': [u'Test item title 3', u'Test item 4'],
})
def test_error_input_processor(self):
class TestItem(Item):
name = Field()
class TestItemLoader(ItemLoader):
default_item_class = TestItem
name_in = MapCompose(float)
il = TestItemLoader()
self.assertRaises(ValueError, il.add_value, 'name',
[u'marta', u'other'])
def test_error_output_processor(self):
class TestItem(Item):
name = Field()
class TestItemLoader(ItemLoader):
default_item_class = TestItem
name_out = Compose(Join(), float)
il = TestItemLoader()
il.add_value('name', u'marta')
with self.assertRaises(ValueError):
il.load_item()
def test_error_processor_as_argument(self):
class TestItem(Item):
name = Field()
class TestItemLoader(ItemLoader):
default_item_class = TestItem
il = TestItemLoader()
self.assertRaises(ValueError, il.add_value, 'name',
[u'marta', u'other'], Compose(float))
class ProcessorsTest(unittest.TestCase):