python中自帶的兩種單元測(cè)試的模塊禾嫉,一個(gè)是doctest睛榄,一個(gè)是unittest梅垄,后一個(gè)之后遇到再說(shuō)唉擂。書(shū)中p52
1 def multiply(a,b):
2 """
3 >>> multiply(2,3)
4 6
5 >>> multiply('baka~',3)
6 'baka~baka~baka~'
7 """
8 return a*b
9
10 if __name__ == '__main__':
11 import doctest
12 doctest.testmod(verbose=True)
以上就是一個(gè)簡(jiǎn)單的doctest的小代碼程序餐屎,具體作用是使用doctest的testmod函數(shù)來(lái)對(duì)已定的函數(shù)進(jìn)行檢查,而三分號(hào)里邊的內(nèi)容就是檢測(cè)的內(nèi)容玩祟,等于說(shuō)模塊會(huì)使用你所寫(xiě)的檢測(cè)來(lái)和你所定的結(jié)果來(lái)對(duì)比是否一樣腹缩。
比如第一個(gè)例子multiply(2,3),自己定的結(jié)果是6藏鹊,這時(shí)候就是測(cè)試結(jié)果對(duì)不對(duì)润讥,這樣就不會(huì)出現(xiàn)修改函數(shù)之后出現(xiàn)錯(cuò)誤的問(wèn)題。
輸出結(jié)果為:
1 Trying:
2 multiply(2,3)
3 Expecting:
4 6
5 ok
6 Trying:
7 multiply('baka~',3)
8 Expecting:
9 'baka~baka~baka~'
10 ok
11 1 items had no tests:
12 __main__
13 1 items passed all tests:
14 2 tests in __main__.multiply
15 2 tests in 2 items.
16 2 passed and 0 failed.
17 Test passed.
值得注意的一點(diǎn)是 第一次運(yùn)行我把程序文件命名為doctest盘寡,輸出是錯(cuò)誤信息楚殿,這是因?yàn)橄喈?dāng)于你重寫(xiě)了doctest這個(gè)文件,命名改為doctest1之后就輸出了上邊的結(jié)果宴抚。
以下一句話引自書(shū)中:
Python 有一個(gè)內(nèi)建的 doctest 模塊勒魔,可以做簡(jiǎn)單的單元測(cè)試。 octest 可以寫(xiě)在三引號(hào)字符串里面菇曲,放在函數(shù)主體或是腳本的第一行冠绢, 它們由直譯器階段范例組成,而這些范例包含了一系列在 Python 提示符下的輸入常潮,并緊接著預(yù)期從 Python 直譯器得到的輸出弟胀。doctest 模塊會(huì)自動(dòng)執(zhí)行任何由 >>> 開(kāi)始的陳述, 并且比對(duì)下一行程序代碼與直譯器所輸出的結(jié)果喊式。