I'm having trouble using doctest with relative imports. The simple solution is just to get rid of the relative imports. Are there any others?
Say I have a package called example containing 2 files:
example/__init__.py
""" This package is entirely useless. >>> arnold = Aardvark() >>> arnold.talk() I am an aardvark. """ from .A import Aardvark if __name__ == "__main__": import doctest doctest.testmod()
example/A.py
class Aardvark(object): def talk(self): print("I am an aardvark.")
If I now attempt
python example/__init__.py
then I get the error
Traceback (most recent call last): File "example/__init__.py", line 8, in <module> from .A import Aardvark ValueError: Attempted relative import in non-package
Create another file my_doctest_runner.py
:
if __name__ == "__main__": import doctest import example doctest.testmod(example)
Execute my_doctest_runner.py
to run doctests in example/__init__.py
:
$ python2.7 my_doctest_runner.py ********************************************************************** File "/tmp/example/__init__.py", line 4, in example Failed example: arnold.talk() Expected: I am an aaardvark. Got: I am an aardvark. ********************************************************************** 1 items had failures: 1 of 2 in example ***Test Failed*** 1 failures.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With