【问题标题】:Python: How can I define a class in a doctest?Python:如何在 doctest 中定义一个类?
【发布时间】:2012-11-22 10:31:33
【问题描述】:

我想使用 doctest 注释块来演示特定基类的用法,但是这不能用 doctest 完成,或者我做错了什么。 这是我的简单演示代码。

class MyClass(object):
    '''
    >>> m = MyClass()
    >>> print m.x
    1
    >>> class A(MyClass):
    >>>  def __init__(self):
    >>>    super(A,self).__init__()
    >>>
    >>> a = A()
    >>> print a.x
    1
    '''


    def __init__(self):
        self.x = 1


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

代码没有运行。这是发布的第一个错误:

Failed example:
class A(MyClass):
Exception raised:
Traceback (most recent call last):
  File "C:\Python27\lib\doctest.py", line 1254, in __run
    compileflags, 1) in test.globs
  File "<doctest __main__.MyClass[2]>", line 1
    class A(MyClass):
                    ^
SyntaxError: unexpected EOF while parsing

【问题讨论】:

  • @avasal:我的错; wohle 帖子的格式不正确,我将该部分与全班其他人重新缩进。

标签: python unit-testing class doctest


【解决方案1】:

在解释器中尝试一下;它使用... 来显示续行。 &gt;&gt;&gt; 仅适用于 new 语句或表达式,而 class 不完整,直到您有一个空的 ... 续行:

    >>> class A(MyClass):
    ...     def __init__(self):
    ...         super(A, self).__init__()
    ...

【讨论】:

  • 非常感谢,现在就像一个魅力!我遇到的另一个问题是“some string\n”中的换行符会引起麻烦。我用 +os.sep 替换了它们。以防万一有同样问题的其他人读到这个。
  • @Sven: os.sep?为什么不将\ 加倍 改为\\n?例如,os.sep 在 UNIX 平台上是 /。
猜你喜欢
  • 2010-12-02
  • 2014-12-20
  • 1970-01-01
  • 1970-01-01
  • 2021-09-09
  • 2014-12-02
  • 2012-01-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多