Case study: debugging failed assertRaises bug

Duncan Booth duncan.booth at invalid.invalid
Tue Apr 26 05:22:42 EDT 2011


Steven D'Aprano <steve+comp.lang.python at pearwood.info> wrote:
> (1) assertRaises REALLY needs a better error message. If not a custom 
> message, at least it should show the result it got instead of an 
> exception.
>If a different exception was thrown then you get an error instead of a 
failure and you are shown the Exception that was thrown, so I think you 
only have an issue if no exception was thrown at all.
If so, here's an alternative way to write your test which might be easier 
to debug:
 def testBadArgType(self):
 # Test failures with bad argument types.
 for d in (None, 23, object(), "spam"):
 with self.assertRaises(TypeError) as cm:
 self.func(d)
 print(d, "didn't throw the exception")
It is worth remembering that print output doesn't appear unless the test 
fails, so you can leave the tracing statement in the test. Also, 
assertRaises has a weird dual life as a context manager: I never knew that 
before today.
-- 
Duncan Booth http://kupuguy.blogspot.com


More information about the Python-list mailing list

AltStyle によって変換されたページ (->オリジナル) /