mirror of https://github.com/scrapy/scrapy.git
[itemloader-errors] updated Compose and MapCompose messages and added tests
#3836
This commit is contained in:
parent
a753ea7e16
commit
b1e348b281
|
|
@ -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
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -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):
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue