Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Doctest and relative imports

Tags:

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 
like image 886
Ben Reynwar Avatar asked Oct 28 '10 21:10

Ben Reynwar


1 Answers

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. 
like image 59
codeape Avatar answered Oct 16 '22 16:10

codeape