Giả sử tôi đã sau:doctest cho docstring lồng nhau
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()
Và chúng ta hãy lưu nó như foo.py. Khi tôi chạy:
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.
đã thử indent docstring (>>> a = '' '... ''' đã kiểm tra tất cả các indents - 4 không gian cho mỗi thụt lề.) Và thay đổi giá duy nhất để báo giá gấp đôi (>>> a = "" "...." ""), các lỗi khác nhau và doctest sẽ không thành công. Hiện tại, công việc duy nhất là nối tất cả các dòng vào một chuỗi dài cực và tách biệt với '\ r \ n'.
Tôi có bỏ lỡ điều gì đó không?
mặc dù tôi có thể không ngón tay cái lên (bắt buộc 15 danh tiếng), cảm ơn vì câu trả lời của bạn. Câu trả lời của bạn hoạt động hoàn hảo. – user1045217
Tôi chỉ muốn đề cập rằng ** doctest ** cần được trích dẫn với dấu ngoặc kép * double *. Câu trả lời có ** docstring ** được trích dẫn * đơn * trích dẫn. Tôi đã trích dẫn doctest của tôi trong báo giá duy nhất, và tôi không thể hiểu tại sao nó không hoạt động. – Forethinker
@Forethinker: cảm ơn! BTW, trang web này được cộng tác chỉnh sửa, khi bạn nhìn thấy một sai lầm rõ ràng, hãy chỉnh sửa bài đăng và sửa nó. – georg