成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

關于Python 模塊發現之旅

開發 后端
進行對Python 模塊測試時的一個關鍵特性是,它們都可以搜索項目的源代碼樹,尋找項目的所有測試,所以不需要集中的測試列表。

本文進行著重講述有關Python 模塊的問題和技巧,在講解Python 模快之前首先先讓大家了解下什么是Python語言,所謂Python:是一種面向對象、直譯式計算機程序設計語言,也是一種功能強大而完善的通用型語言。

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

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

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

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

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

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

選擇了要搜索的目錄之后,這三種測試工具的做法就非常相似了:它們都尋找與某一模式匹配的 Python 模塊(也就是以 .py 結尾的文件)。zope.testing 工具在默認情況下使用正則表達式 "tests",也就是只尋找名為 tests.py 的文件,忽略其他所有文件。可以使用命令行選項或 buildout.cfg 指定另一個正則表達式

  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 結尾的 Python 模塊。nosetests 命令更靈活,它使用一個正則表達式(“((?:^|[\b_\.-])[Tt]est)”)選擇以 test 或 Test 開頭或這個單詞處于單詞邊界后面的模塊。通過在命令行上使用 -m 選項或在項目的 .noserc 文件中設置這個選項,可以指定另一個正則表達式。

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

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

責任編輯:chenqingxiang 來源: 網界網
相關推薦

2009-02-24 09:04:53

數據庫工程師 評選

2010-04-23 15:39:00

無線網路路由器華碩

2010-05-11 22:32:48

無線產品無線路由華碩

2015-07-07 11:12:48

2024-05-28 00:00:10

Python模塊開發

2019-10-24 15:28:41

Python程序員數據

2009-03-24 14:47:55

無線家居無線產品華碩

2018-09-28 10:45:19

Python 開發模塊

2010-03-25 11:39:36

華碩

2011-08-29 10:22:48

QtWebkit 模塊HTML文檔

2015-06-29 10:40:23

運維管理/北塔

2022-09-15 15:04:47

物聯網通信數據

2011-08-15 15:56:29

Cocoa編程模塊

2011-08-29 15:53:04

Lua位運算

2022-04-06 08:47:03

Dubbo服務協議

2015-09-15 16:10:45

PythonPython 開發Docker

2020-05-18 08:42:23

CSS背景圖像前端開發

2015-07-14 09:45:09

虛擬化

2018-11-05 20:00:00

正則表達式爬蟲Python

2011-05-23 16:50:12

python
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 日韩电影免费在线观看中文字幕 | 精品一区二区三区免费毛片 | 日韩一区二区三区在线观看 | 国产成人免费视频网站视频社区 | 久久99精品久久久久久国产越南 | 久久综合一区二区 | 日一日操一操 | 香蕉二区 | 中文字幕亚洲一区二区三区 | 欧美一区视频 | 中文字幕不卡在线观看 | 亚洲精品成人网 | 久久精品视频在线免费观看 | 欧美亚洲国产日韩 | 国产农村妇女毛片精品久久麻豆 | 精品视频免费在线 | 97精品国产97久久久久久免费 | 久草视频在线播放 | 91久久| 色播99 | 亚洲精品v日韩精品 | 国产欧美一区二区三区日本久久久 | 欧美精品在线播放 | 国产馆| 一区二区三 | 色精品 | 久草视频观看 | 天天干视频 | 亚洲欧美男人天堂 | 亚洲a视频 | 精品国产欧美一区二区三区成人 | 国产伦精品一区二区三区精品视频 | 久久成人精品视频 | 国产成人久久精品一区二区三区 | 欧美久久久久 | 激情三区 | 精品三级在线观看 | 一本大道久久a久久精二百 欧洲一区二区三区 | 亚洲成人免费 | 国产精品久久欧美久久一区 | 免费人成激情视频在线观看冫 |