1. 程式人生 > >文件測試doctest及常見問題

文件測試doctest及常見問題

#!/usr/bin/env python
#_*_ coding:utf-8 _*_

author = 'Noiccy'
'''description:文件測試'''

def fact(n):
    '''
    Calculate 1*2*...*n
    >>> fact(1)
    1
    >>> fact(10)
    3628800
    >>> fact(-1)
    Traceback (most recent call last):
        ...
    ValueError
    '''
    if n < 1:
        raise ValueError()
    if n == 1:
        return 1
    return n*fact(n-1)

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

執行後,沒有輸出內容才是正確的!

可能遇到的問題:

一、AttributeError: module 'doctest' has no attribute 'testmod'

報錯原因:儲存的檔名是doctest.py,導致doctest模組被重寫。修改檔名,並刪除檔案目錄下的__pycache__資料夾後,重新執行即可

二、ValueError: line 3 of the docstring for __main__.fact lacks blank after >>>: '>>>fact(1)'

報錯原因:>>>後面有個空格

三、File "E:\LearnPython\doctest1.py", line 14, in __main__.fact
Failed example:
    fact(-1)
Exception raised:
    Traceback (most recent call last):
      File "C:\Program Files\Python36\lib\doctest.py", line 1330, in __run
        compileflags, 1), test.globs)
      File "<doctest __main__.fact[2]>", line 1, in <module>
        fact(-1)
      File "E:\LearnPython\doctest1.py", line 20, in fact
        raise ValueError()
    ValueError

報錯原因:Traceback後面有個空格