代码之家  ›  专栏  ›  技术社区  ›  Ben Reynwar

Doctest和相关进口

  •  17
  • Ben Reynwar  · 技术社区  · 14 年前

    我在使用相关导入的doctest时遇到问题。简单的解决办法就是去掉相对进口。还有别的吗?

    假设我有一个名为example的包,其中包含两个文件:

    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
    
    2 回复  |  直到 14 年前
        1
  •  14
  •   codeape    14 年前

    创建另一个文件 my_doctest_runner.py :

    if __name__ == "__main__":
        import doctest
        import example
        doctest.testmod(example)
    

    我的医生.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.
    
        2
  •  -1
  •   pyfunc    14 年前

    就这么做

    from A import Aardvark