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'で区切ることです。
私は何か不足していますか?
をいくつかのドットを配置する必要があると思います。あなたの答えは完璧に働きます。 – user1045217
私はちょうど** doctest **を* double *引用符で引用する必要があることを言いたいと思います。答えは** docstring **です。* single * quoteです。私は独断で引用したので、なぜそれが機能していないのか理解できませんでした。 – Forethinker
@Forethinker:ありがとう!ところで、このサイトは協力的に編集されています。明らかな間違いがあるときは、投稿を編集して修正してください。 – georg