国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

python 測試框架doctest

2019-11-11 05:42:00
字體:
來源:轉載
供稿:網(wǎng)友
摘要: 這里將從(pythontesting.net)陸續(xù)編譯四篇 Python 測試框架的簡介,分別為:doctest、unittest、nose 和 pytest。本篇為第一篇:doctest               

doctest 是一個 Python 發(fā)行版自帶的標準模塊。本篇將分別對使用 doctest 的兩種方式——嵌入到源代碼中和做成獨立文件做基本介紹。<br />

doctest 的概念模型


在 Python 的官方文檔中,對 doctest 的介紹是這樣的:

doctest 模塊會搜索那些看起來像交互式會話的 Python 代碼片段,然后嘗試執(zhí)行并驗證結果

即使從沒接觸過 doctest,我們也可以從這個名字中窺到一絲端倪。“它看起來就像代碼里的文檔字符串(docstring)一樣” 如果你這么想的話,就已經(jīng)對了一半了。

doctest 的編寫過程就仿佛你真的在一個交互式 shell(比如 idle)中導入了要測試的模塊,然后開始一條條地測試模塊里的函數(shù)一樣。實際上有很多人也是這么做的,他們寫好一個模塊后,就在 shell 里挨個測試函數(shù),最后把 shell 會話復制粘貼成 doctest 用例。<br />

舉個例子


下面使用的例子是一個只有一個函數(shù)的模塊,其中簽入了兩個 doctest 的測試用例。

unnecessary_math.py:

lang:python"""這里也可以寫"""def multiply(a,b): """ >>> multiply(2,3) 6 >>> multiply('baka~',3) 'baka~baka~baka~' """ return a*bif __name__ == '__main__': import doctest doctest.testmod(verbose=True)

注意測試代碼的位置,前面說過 doctest 的測試用例就像文檔字符串一樣,這句話的內(nèi)涵在于:測試用例的位置必須放在整個模塊文件的開頭,或者緊接著對象聲明語句的下一行。也就是可以被__doc__ 這個屬性引用到的地方。并非像普通注釋一樣寫在哪里都可以。另:verbose 參數(shù)用于控制是否輸出詳細信息,默認為False,如果不寫,那么運行時不會輸出任何東西,除非測試 fail。

示例的運行輸出為:

Trying: multiply(2,3)Expecting: 6okTrying: multiply('baka~',3)Expecting: 'baka~baka~baka~'ok1 items had no tests: __main__1 items passed all tests: 2 tests in __main__.multiply2 tests in 2 items.2 passed and 0 failed.Test passed.

上例中啟動測試的方式是在 __main__ 函數(shù)里調用了 doctest.testmod() 函數(shù)。這對于純?nèi)萜餍湍K文件來說是一個好辦法——正常使用時只做導入用,直接運行文件則進行測試。而對于__main__ 函數(shù)另有他用的情況,則還可以通過命令行來啟動測試:

$ python -m doctest unnecessary_math.py$ python -m doctest -v unnecessary_math.py

這里 -m 表示引用一個模塊,-v 等價于 verbose=True。運行輸出與上面基本一樣。<br />

獨立文件模式


如果不想(或不能)把測試用例寫進源代碼里,則還可以使用一個獨立的文本文件來保存測試用例。

lang:python可選的一些解釋性內(nèi)容...>>> from test import multiply>>> multiply(2,3)6>>> multiply('baka~',3)'baka~baka~baka~'

幾乎同樣的格式。運行方法可以分為在 Python shell 里運行或者在系統(tǒng) shell 里運行:

lang:python>>> import doctest>>> doctest.testfile('example.txt')

bash/cmd.exe:

$ python -m doctest -v example.txt
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 青阳县| 兴业县| 宜宾市| 麻江县| 崇州市| 金山区| 长寿区| 清水县| 中超| 佳木斯市| 城口县| 洪江市| 南陵县| 淳安县| 新营市| 大方县| 即墨市| 尖扎县| 竹山县| 吴忠市| 板桥市| 丽水市| 湟源县| 正定县| 双城市| 龙门县| 山阳县| 永济市| 大庆市| 白河县| 武鸣县| 福州市| 五原县| 门源| 同德县| 山东省| 马公市| 凉城县| 磐安县| 夹江县| 荃湾区|