Если вы ожидаете, что Thing (name = '1234') вызовет исключение, есть два способа справиться с этим.
Один из них - использовать assertRaises Джанго (фактически из unittest / unittest2):
def mytest(self):
self.assertRaises(FooException, Thing, name='1234')
Сбой, если Thing (name = '1234') не выдаст ошибку FooException. Другой способ - перехватить ожидаемое исключение и вызвать его, если этого не произошло, например:
def mytest(self):
try:
thing = Thing(name='1234')
self.fail("your message here")
except FooException:
pass
Очевидно, замените FooException на то, которое вы ожидаете получить от создания объекта со слишком длинной строкой. ValidationError
Третий вариант (начиная с Python 2.7) - использовать assertRaises в качестве менеджера контекста, что делает код более чистым и читабельным:
def mytest(self):
with self.assertRaises(FooException):
thing = Thing(name='1234')
К сожалению, это не позволяет настраивать сообщения об ошибках теста, поэтому хорошо документируйте свои тесты. Подробнее см. https://hg.python.org/cpython/file/2.7/Lib/unittest/case.py#l97.