2011-11-14 8 views
5

は、私は次のコードがあるとします。ネストされたのdocstring doctestの

def foo(s): 
    """A dummy function foo. For example: 

>>> a = '''This is a test string line 1 
This is a test string line 2 
This is a test string line 3''' 
>>> foo(a) 
This is a test string line 1 
This is a test string line 2 
This is a test string line 3 
>>> 
    """ 
    print s 

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

とのはfoo.py.として保存してみましょうを私は実行すると:

C:\Python27>python.exe foo.py 
********************************************************************** 
File "foo.py", line 5, in __main__.foo 
Failed example: 
    a = '''This is a test string line 1 
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__.foo[0]>", line 1 
     a = '''This is a test string line 1 
             ^
    SyntaxError: EOF while scanning triple-quoted string literal 
********************************************************************** 
File "foo.py", line 8, in __main__.foo 
Failed example: 
    foo(a) 
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__.foo[1]>", line 1, in <module> 
     foo(a) 
    NameError: name 'a' is not defined 
********************************************************************** 
1 items had failures: 
    2 of 2 in __main__.foo 
***Test Failed*** 2 failures. 

はインデントを試してみましたドキュメンテーション文字列(>>> A =「」「... 『』」すべてのインデント点検した - 各インデントのための4つのスペースを。)と二重引用符に単一引用符を変更(>>> a = "" "...." "")、エラーは異なり、doctestはうまくいっていません。現在、唯一の作業はすべての行を極端な長い文字列に結合し、 '\ r \ n'で区切ることです。

私は何か不足していますか?

答えて

9

は、私はあなたが私がいない親指アップ(15評判が必要)することができますが、あなたの答えのために、感謝が

>>> a = """This is a test string line 1 
... This is a test string line 2 
... This is a test string line 3""" 
+0

をいくつかのドットを配置する必要があると思います。あなたの答えは完璧に働きます。 – user1045217

+1

私はちょうど** doctest **を* double *引用符で引用する必要があることを言いたいと思います。答えは** docstring **です。* single * quoteです。私は独断で引用したので、なぜそれが機能していないのか理解できませんでした。 – Forethinker

+0

@Forethinker:ありがとう!ところで、このサイトは協力的に編集されています。明らかな間違いがあるときは、投稿を編集して修正してください。 – georg

関連する問題