How do you debug when a unittest.TestCase fails?

Emin.shopper Martinian.shopper emin.shopper at gmail.com
Wed Jul 18 17:42:47 EDT 2007


Thanks for the reply, but neither of those work for me. I don't seem to have
the "trial" program installed. Where do you get it?

Also, when I use the try/catch block, I get the following error:

Traceback (most recent call last):
  File "_test.py", line 10, in <module>
    pdb.pm()
  File "c:\python25\lib\pdb.py", line 1148, in pm
    post_mortem(sys.last_traceback)
AttributeError: 'module' object has no attribute 'last_traceback'


On 7/18/07, Jean-Paul Calderone <exarkun at divmod.com> wrote:
>
> On Wed, 18 Jul 2007 16:40:46 -0400, "Emin.shopper Martinian.shopper" <
> emin.shopper at gmail.com> wrote:
> >Dear Experts,
> >
> >How do you use pdb to debug when a TestCase object from the unittest
> module
> >fails? Basically, I'd like to run my unit tests and invoke pdb.pm when
> >something fails.
> >
> >I tried the following with now success:
> >
> >Imagine that I have a module _test.py that looks like the following:
> >
> >-----------------------
> >import unittest
> >class MyTest(unittest.TestCase):
> >    def testIt(self):
> >        raise Exception('boom')
> >if __name__ == '__main__':
> >    unittest.main()
> >-----------------------
> >
> >If I do
> >>>>import _test; _test.unittest()
> >
> >no tests get run.
> >
> >If I try
> >>>>import _test; t = _test.MyTest()
> >
> >I get
> >
> >Traceback (most recent call last):
> >  File "<stdin>", line 1, in <module>
> >  File "c:\python25\lib\unittest.py", line 209, in __init__
> >    (self.__class__, methodName)
> >ValueError: no such test method in <class '_test.MyTest'>: runTest
> >
> >If I try
> >>>>import _test; t = _test.MyTest(methodName='testIt'); t.run()
> >
> >nothing happens.
>
> I use `trial -b <filename>', which automatically enables a bunch of nice
> debugging functionality. ;)  However, you can try this, if you're not
> interested in using a highly featureful test runner:
>
>    try:
>        unittest.main()
>    except:
>        import pdb
>        pdb.pm()
>
> This will "post-mortem" the exception, a commonly useful debugging
> technique.
>
> Jean-Paul
> --
> http://mail.python.org/mailman/listinfo/python-list
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-list/attachments/20070718/32a46948/attachment.html>


More information about the Python-list mailing list