Running doctests with unittest

Jim Sizelove sizelji at insightbb.com
Wed Mar 9 16:04:20 EST 2005


Thomas Heller wrote:
> I'm trying to integrate some doctest tests with unittest.  The tests
> must be exposed as one or more subclasses of unittest.TestCase, so I'm
> collecting them with a call to doctest.DocTestSuite(), and then add them
> to a TestCase class I have created.
> The tests seem to run, but they always seem to succeed - I have no idea
> why.  Any ideas?
> 
> Thomas
> 
> ---snip---
> """
> 
>>>>print "Hi"
>>>>print 1213
> 
> """
> 
> def func():
>     """
>     >>> print "spam"
>     >>> print blah
>     """
> 
> import doctest, unittest
> suite = doctest.DocTestSuite()
> 
> class TestCase(unittest.TestCase):
>     pass
> 
> for index, test in enumerate(suite._tests):
>     setattr(TestCase, "test_%d" % index, test)
> 
> if __name__ == "__main__":
>     if 1:
>         import unittest
>         unittest.main()
>     else:
>         import doctest
>         doctest.testmod()
> ---snip---

I can't explain why all the tests seemed to pass, but I tried a 
different approach that works.

Once you have a suite object, you just need to run it.  The 
TextTestRunner works well for that.  I got output errors and failures by 
  doing the following:

if __name__ == '__main__':
     import doctest, unittest
     suite = doctest.DocTestSuite()
     testRunner = unittest.TextTestRunner()
     testRunner.run(suite)

HTH,
Jim Sizelove



More information about the Python-list mailing list