estoy corriendo en el siguiente lugar extraño problema:assertRaises errores incluso si la excepción se lanza
Estoy desarrollando una aplicación de Django y en mi clase de modelos estoy definiendo una excepción que debe plantearse cuando un error de validación:
class MissingValueException(Exception):
"""Raise when a required attribute is missing."""
def __init__(self, message):
super(MissingValueException, self).__init__()
self.message = message
def __str__(self):
return repr(self.message)
Este código se llama desde una clase publicación en un método de validación:
def validate_required_fields(self):
# Here is the validation code.
if all_fields_present:
return True
else:
raise MissingValueException(errors)
en mi unidad de prueba creo un caso en el que la excepción debe ser elevado:
def test_raise_exception_incomplete_publication(self):
publication = Publication(publication_type="book")
self.assertRaises(MissingValueException, publication.validate_required_fields)
Esto produce el siguiente resultado:
======================================================================
ERROR: test_raise_exception_incomplete_publication (core_knowledge_platform.core_web_service.tests.logic_tests.BusinessLogicTests)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/media/data/Dokumente/Code/master_project/core_knowledge_platform/../core_knowledge_platform/core_web_service/tests/logic_tests.py", line 45, in test_raise_exception_incomplete_publication
self.assertRaises(MissingValueException, method,)
File "/usr/lib/python2.7/unittest/case.py", line 465, in assertRaises
callableObj(*args, **kwargs)
File "/media/data/Dokumente/Code/master_project/core_knowledge_platform/../core_knowledge_platform/core_web_service/models.py", line 150, in validate_required_fields
raise MissingValueException(errors)
MissingValueException: 'Publication of type book is missing field publisherPublication of type book is missing field titlePublication of type book is missing field year'
Así que parece que se eleva la excepción (que es el caso - incluso he comprobado en una sesión IPython interactiva), pero parece que assertRaises no lo está atrapando
¿Alguien tiene alguna idea de por qué esto podría pasar?
Gracias
Sí, ese era el problema: la excepción planteada era de:. .models.Exception Mientras que la espera fue solamente: .models.Exception –
BergmannF
Eh ... estoy teniendo este problema con un 'AssertionError' - Estoy usando' self.assertRaises (AssertionError, ...) ', y todavía está fallando con un' AssertionError'. Como eso está en el núcleo de Python, esta no puede ser la respuesta. ¿Alguna otra posibilidad? – naught101
No importa, fue un error por separado. Lección: preste mucha atención a los números de línea en el resultado de falla de prueba. – naught101