Problem with doctest
Dieter Maurer
dieter at handshake.de
Mon May 4 12:41:01 EDT 2020
ast wrote at 2020-5-4 15:20 +0200:
>doctest of the sample function funct() doesn't works
>because flag used by funct() is the one defined in
>first line "flag = True" and not the one in the
>doctest code ">>> flag = False".
>
>Any work around known ?
>
>
>flag = True # <- funct() always use this one
>
>def funct():
> """
> Code for doctest:
>
> >>> flag = True
> >>> funct()
> 'Yes'
> >>> flag = False # <- Ignored unfortunalely
> >>> funct()
> 'No'
> """
>
> if flag:
> return "Yes"
> else:
> return "No"
>
>if __name__ == "__main__":
> import doctest
> doctest.testmod()
>
>
>
>Failed example:
> funct()
>Expected:
> 'No'
>Got:
> 'Yes'
>**********************************************************************
>1 items had failures:
> 1 of 4 in __main__.funct
>***Test Failed*** 1 failures.
The "flag" used inside "funct" refers to the definition
in "funct.__globals__" (i.e. the module where "funct" is defined in).
As your observation shows, this is not the "flag" changed by the
doctest. The doctest behavior reflects the use in a function or a
foreign module (rather than a use at the top level of the module
defining "funct").
More information about the Python-list
mailing list