سؤال
أواجه مشكلة في استخدام Doctest مع الواردات النسبية. الحل البسيط هو التخلص من الواردات النسبية. هل هناك أي شخص آخر؟
قل أن لديّ حزمة تسمى مثال تحتوي على ملفين:
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()
مثال/a.py
class Aardvark(object):
def talk(self):
print("I am an aardvark.")
إذا حاولت الآن
python example/__init__.py
ثم أحصل على الخطأ
Traceback (most recent call last):
File "example/__init__.py", line 8, in <module>
from .A import Aardvark
ValueError: Attempted relative import in non-package
المحلول
إنشاء ملف آخر my_doctest_runner.py
:
if __name__ == "__main__":
import doctest
import example
doctest.testmod(example)
ينفذ my_doctest_runner.py
لتشغيل الدكتوراه في 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.
نصائح أخرى
فقط افعل
from A import Aardvark
لا تنتمي إلى StackOverflow