python中doctest如何嵌入原始碼?

TigerJin發表於2021-09-11

之前看過文件測試的小夥伴,已經瞭解到了它的妙用。doctest屬於python文件測試中的模組,有兩種使用方式。今天就doctest嵌入原始碼,小編為大家進行詳細講解。


下面的程式碼只有一個函式,裡面嵌入了兩個doctest測試用例,檔名為naruto.py:

'''
這個例子展示如何在原始碼中嵌入doctest用例。
'>>>' 開頭的行就是doctest測試用例。
不帶 '>>>' 的行就是測試用例的輸出。
如果實際執行的結果與期望的結果不一致,就標記為測試失敗。
'''
def multiply(a, b):
    """
    >>> multiply(4, 3)
    12
    >>> multiply('a', 3)
    'aaa'
    """
    return a * b
if __name__=='__main__':
    import doctest
    doctest.testmod(verbose=True)


有兩個地方可以放doctest測試用例,一個位置是模組的最開頭,另一個位置是函式宣告語句的下一行(就像上面的例子這樣)。除此之外的其它地方不能放,放了也不會執行。

verbose引數,如果設定為True則在執行測試的時候會輸出詳細資訊。預設是False,表示執行測試時,只有失敗的用例會輸出詳細資訊,成功的測試用例不會輸出任何資訊。

將上面提到的檔案放在D盤(或者其他你覺得方便的目錄),開啟cmd命令列,切換到naruto.py所在的目錄(我的在D盤),輸入下面程式碼:


python naruto.py


輸出結果為:


Trying:
    multiply(4, 3)
Expecting:
    12
ok
Trying:
    multiply('a', 3)
Expecting:
    'aaa'
ok
1 items had no tests:
    __main__
1 items passed all tests:
   2 tests in __main__.multiply
2 tests in 2 items.
2 passed and 0 failed.
Test passed.


上面啟動測試的方式是在__main__函式中呼叫了doctest.testmod()方法。

如果__main__函式有其他用途,不方便呼叫doctest.testmod()方法,那麼可以用另外一種執行測試的方法,在cmd中輸入:


$ python -m doctest naurto.py 
$ python -m doctest -v naruto.py


以上就是python中doctest嵌入原始碼的方法。更多Python學習推薦:

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/2144/viewspace-2832400/,如需轉載,請註明出處,否則將追究法律責任。

相關文章