[Python-Dev] doctest, unicode repr, and 2to3

Žiga Seilnacht ziga.seilnacht at gmail.com
Sat Mar 6 00:08:14 CET 2010


Martin v. Löwis wrote:
> Johan Harjano ran into an interesting problem when trying to run the
> Django test suite under Python 3.1.
> 
> Django has doctests of the form
> 
> >>> a6.headline
> u'Default headline'
> 
> Even when converting the doctest with 2to3, the expected output is
> unmodified. However, in 3.x, the expected output will change (i.e. not
> produce an u"" prefix anymore).
> 
> Now, it might be possible to reformulate the test case (e.g. use print()
> instead of relying on repr), however, this is undesirable as a) the test
> should continue to test in 2.x that the result object is a unicode
> string, and b) it makes the test less readable.
> 
> I would like to find a solution where this gets automatically corrected,
> e.g. through 2to3, or through changes to doctest, or through changes of
> str.__repr__.
> 
> Any proposal appreciated.

You can use a custom DocTestRunner that replaces sys.displayhook in
its run() method and records the changed output. Something like the
attached seems to do the trick.

Regards,
Ziga
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: convert_doctest.py
URL: <http://mail.python.org/pipermail/python-dev/attachments/20100306/381e9d33/attachment.ksh>


More information about the Python-Dev mailing list