سؤال

أواجه مشكلة في استخدام 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
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top