How do I import the Django DoesNotExist exception?

You don't need to import it - as you've already correctly written, DoesNotExist is a property of the model itself, in this case Answer.

Your problem is that you are calling the get method - which raises the exception - before it is passed to assertRaises. You need to separate the arguments from the callable, as described in the unittest documentation:

self.assertRaises(Answer.DoesNotExist, Answer.objects.get, body__exact='<p>User can reply to discussion.</p>')

or better:

with self.assertRaises(Answer.DoesNotExist):
    Answer.objects.get(body__exact='<p>User can reply to discussion.</p>')

DoesNotExist is always a property of the model that does not exist. In this case it would be Answer.DoesNotExist.


One thing to watch out for is that the second parameter to assertRaises needs to be a callable - not just a property. For instance, I had difficulties with this statement:

self.assertRaises(AP.DoesNotExist, self.fma.ap)

but this worked fine:

self.assertRaises(AP.DoesNotExist, lambda: self.fma.ap)

You can also import ObjectDoesNotExist from django.core.exceptions, if you want a generic, model-independent way to catch the exception:

from django.core.exceptions import ObjectDoesNotExist

try:
    SomeModel.objects.get(pk=1)
except ObjectDoesNotExist:
    print 'Does Not Exist!'