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