I love doctest -- the way it combines documentation with verification seems elegant and useful, and most of the time it's simple and easy to use.

But I've run into a bit of a snag trying to test a method that returns a dictionary, because (of course) the order in which the dictionary pairs are printed may not match what I wrote as the expected result. For example, my doctest string is:

        """
>>> t = Template("The $object in $location falls mainly on the $subloc.")
        >>> t.match( "The rain in Spain falls mainly on the train." )
        {'object': 'rain', 'location': 'Spain', 'subloc': 'train'}
        """

But when I run it, I get:

Failed example:
    t.match( "The rain in Spain falls mainly on the train." )
Expected:
    {'object': 'rain', 'location': 'Spain', 'subloc': 'train'}
Got:
    {'subloc': 'train', 'object': 'rain', 'location': 'Spain'}

Now, you and I can see that the obtained results really do match the expected results, considered as a dictionary rather than as a string. But doctest doesn't see it that way.

What's the standard solution for this? Should I iterate over the sorted keys and print those out instead? Is there some built-in method somewhere that will print a dictionary in a reliable order? Does doctest have some special way to tell it to consider the result as a dictionary rather than a string? Or something else?

Thanks,
- Joe

--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to