Dealing with dicts in doctest

Steven D'Aprano steve+comp.lang.python at pearwood.info
Thu Jul 5 21:43:26 EDT 2018


On Fri, 06 Jul 2018 09:31:50 +1000, Cameron Simpson wrote:

> On 05Jul2018 17:57, Steven D'Aprano
> <steve+comp.lang.python at pearwood.info> wrote:
>>I have a function which returns a dict, and I want to use doctest to
>>ensure the documentation is correct. So I write a bunch of doctests:
>>
>>def func(arg):
>>    """blah blah blah
>>
>>    >>> func(1)
>>    {'a': 1, 'b': 2, 'c': 3}
>>    """
>>
>>which is correct, *except* that dict keys have arbitrary order in the
>>versions of Python I'm using.
>>
>>I have three ways of dealing with this. Which do you prefer?
> 
> Option 4:
> 
>     >>> func(1) == {'a': 1, 'b': 2, 'c': 3}
>     True

Alas, in reality func takes anything up to six arguments, at least one of 
which will be a moderately long sequence requiring two lines:

    >>> func([('a', 1), ('bb', 2), ('ccc', 4), ('dddd', 8)],
    ...      ('eee', 16), ('ff', 32), ('g', 64)], ...

and the output is similarly long. So making it a one-liner isn't 
generally practical.




-- 
Steven D'Aprano
"Ever since I learned about confirmation bias, I've been seeing
it everywhere." -- Jon Ronson




More information about the Python-list mailing list