Załóżmy, że mam następujący kod:Doctest dla zagnieżdżonego docstring
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()
I niech zapisać go jako foo.py. Kiedy uruchomić:
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.
Próbowałem wciąć docstring (>>> a = „” „...«»” sprawdzeniu wszystkich wcięcia - 4 miejsca dla każdego tiret.) I zmienił apostrof na cudzysłów (>>> a = "" "...." ""), błędy są różne i test nie zakończy się pomyślnie. Obecnie jedynym zadaniem jest połączenie wszystkich linii z ekstremalnie długim ciągiem i oddzielenie za pomocą "\ r \ n".
Czy coś mi brakuje?
chociaż nie mogę kciuk w górę (wymagane 15 reputacji), dzięki za odpowiedź. Twoja odpowiedź działa idealnie. – user1045217
Chcę tylko wspomnieć, że ** doctest ** musi być cytowany z * podwójnym * cudzysłowem. Odpowiedź ma ** docstring ** jest cytowany * pojedynczy * cytat. Mój test został przytoczony w jednym cudzysłowie i nie mogłem zrozumieć, dlaczego to nie działa. – Forethinker
@Forethinker: thanks! BTW, ta strona jest wspólnie edytowana, gdy widzisz oczywisty błąd, możesz edytować wpis i go poprawić. – georg