自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

關(guān)于Python 模塊發(fā)現(xiàn)之旅

開發(fā) 后端
進(jìn)行對Python 模塊測試時(shí)的一個(gè)關(guān)鍵特性是,它們都可以搜索項(xiàng)目的源代碼樹,尋找項(xiàng)目的所有測試,所以不需要集中的測試列表。

本文進(jìn)行著重講述有關(guān)Python 模塊的問題和技巧,在講解Python ??熘笆紫认茸尨蠹伊私庀率裁词荘ython語言,所謂Python:是一種面向?qū)ο?、直譯式計(jì)算機(jī)程序設(shè)計(jì)語言,也是一種功能強(qiáng)大而完善的通用型語言。

但是,它們采用的測試發(fā)現(xiàn)規(guī)則不太一樣,在選擇框架時(shí)需要考慮到這一點(diǎn)。測試框架執(zhí)行的第一步是,選擇將在哪些目錄中搜索包含測試的文件。注意,這三種框架都從整個(gè)項(xiàng)目的基目錄開始搜索;如果要測試名為 example 的包,那么它們會從包含 example 的父目錄開始搜索測試。

但是,這三種框架在選擇搜索哪些目錄方面有所差異:zope.testing 工具向下遞歸地搜索是 Python 包的所有目錄,也就是包含 __init__.py 文件的目錄(對于Python 模塊,這說明可以用 import 語句導(dǎo)入它們)。

這意味著不檢查非包目錄中的數(shù)據(jù)和代碼,但是另一方面,這也意味著從理論上說程序員可以用 import 語句導(dǎo)入您編寫的每個(gè)測試。一些程序員覺得這讓人不舒服,希望能夠把測試放在包的一般用戶看不到的地方。

py.test 命令向下遞歸地搜索項(xiàng)目的每個(gè)目錄和子目錄,無論目錄是否是 Python 包。注意,當(dāng)兩個(gè)相鄰目錄包含同名的測試時(shí),它似乎有一個(gè) bug。例如,如果相鄰的dir1/test.py 和 dir2/test.py 文件都包含名為 test_example 的測試,那么 py.test 將運(yùn)行第一個(gè)測試兩次。

而完全忽略第二個(gè)測試!如果為 py.test 編寫測試并把它們放在非包目錄中,就要注意保持名稱是惟一的。nose 測試運(yùn)行器采用的實(shí)現(xiàn)方式介于另兩種工具之間:它向下遞歸地搜索每個(gè) Python 包,但是只檢查目錄名中包含單詞 test 的目錄。

這意味著,如果不想讓 nose 搜索某個(gè)目錄,那么只需注意不在目錄名中包含 test 即可。與 py.test 不同,nose 可以正確地處理包含同名測試的相鄰目錄(但是保持測試名稱惟一仍然是有幫助的,這樣在用 -v 選項(xiàng)顯示測試結(jié)果時(shí)不容易混淆)。

選擇了要搜索的目錄之后,這三種測試工具的做法就非常相似了:它們都尋找與某一模式匹配的 Python 模塊(也就是以 .py 結(jié)尾的文件)。zope.testing 工具在默認(rèn)情況下使用正則表達(dá)式 "tests",也就是只尋找名為 tests.py 的文件,忽略其他所有文件??梢允褂妹钚羞x項(xiàng)或 buildout.cfg 指定另一個(gè)正則表達(dá)式

  1. # Snippet of a buildout.cfg file that searches for tests  
  2. # in any Python module starting with "test" or "ftest".  
  3.  
  4. [test]  
  5. recipe = zc.recipe.testrunner  
  6. eggs = my_package 
  7. defaults = ['--tests-pattern', 'f?test'] 

py.test 更死板,總是尋找名稱以 `test_ 開頭或以 _test 結(jié)尾的 Python 模塊。nosetests 命令更靈活,它使用一個(gè)正則表達(dá)式(“((?:^|[\b_\.-])[Tt]est)”)選擇以 test 或 Test 開頭或這個(gè)單詞處于單詞邊界后面的模塊。通過在命令行上使用 -m 選項(xiàng)或在項(xiàng)目的 .noserc 文件中設(shè)置這個(gè)選項(xiàng),可以指定另一個(gè)正則表達(dá)式。

哪種方法最好?盡管一些開發(fā)人員喜歡有靈活性,而且許多人認(rèn)為 zope.testing 工具的搜索范圍應(yīng)該更寬,不應(yīng)該只限于文件名為 tests.py 的模塊,但是我實(shí)際上更喜歡 py.test 采用的方式。

所有使用 py.test 的項(xiàng)目必須在測試命名方面采用一致的約定,這讓其他程序員更容易閱讀和維護(hù)測試。在使用另外兩種框架時(shí)。閱讀或創(chuàng)建測試文件需要兩步:首先,必須了解這個(gè)項(xiàng)目使用的正則表達(dá)式,然后才能檢查它的代碼。如果您同時(shí)從事多個(gè)項(xiàng)目,就必須記住幾種不同的測試文件命名約定。

責(zé)任編輯:chenqingxiang 來源: 網(wǎng)界網(wǎng)
相關(guān)推薦

2009-02-24 09:04:53

數(shù)據(jù)庫工程師 評選

2010-05-11 22:32:48

無線產(chǎn)品無線路由華碩

2010-04-23 15:39:00

無線網(wǎng)路路由器華碩

2015-07-07 11:12:48

2024-05-28 00:00:10

Python模塊開發(fā)

2019-10-24 15:28:41

Python程序員數(shù)據(jù)

2009-03-24 14:47:55

無線家居無線產(chǎn)品華碩

2018-09-28 10:45:19

Python 開發(fā)模塊

2010-03-25 11:39:36

華碩

2011-08-29 10:22:48

QtWebkit 模塊HTML文檔

2015-06-29 10:40:23

運(yùn)維管理/北塔

2022-09-15 15:04:47

物聯(lián)網(wǎng)通信數(shù)據(jù)

2011-08-29 15:53:04

Lua位運(yùn)算

2011-08-15 15:56:29

Cocoa編程模塊

2015-09-15 16:10:45

PythonPython 開發(fā)Docker

2022-04-06 08:47:03

Dubbo服務(wù)協(xié)議

2011-05-23 16:50:12

python

2018-11-05 20:00:00

正則表達(dá)式爬蟲Python

2020-05-18 08:42:23

CSS背景圖像前端開發(fā)

2015-07-14 09:45:09

虛擬化
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號