我正在爲大型項目使用金字塔框架,我發現在一個tests.py
文件中存在所有測試都很麻煩。所以我決定創建一個包含我的測試文件的目錄。問題是,我不知道如何告訴金字塔,從這個目錄運行我的測試。在多個文件中進行測試
我正在使用python setup.py test -q
運行測試。
但是,當我將測試移動到測試目錄後,這當然不起作用。該怎麼做,讓它工作?
我正在爲大型項目使用金字塔框架,我發現在一個tests.py
文件中存在所有測試都很麻煩。所以我決定創建一個包含我的測試文件的目錄。問題是,我不知道如何告訴金字塔,從這個目錄運行我的測試。在多個文件中進行測試
我正在使用python setup.py test -q
運行測試。
但是,當我將測試移動到測試目錄後,這當然不起作用。該怎麼做,讓它工作?
首先,您需要確保tests
不僅僅是一個目錄,而是一個通過在其中創建一個__init__.py
的Python包。
您還需要確保將您的tests
包test_something.py
中的模塊命名。
大多數測試運行,因爲他們的測試發現的一部分,查找該包中開始test_
命名tests
一個模塊或組件,模塊和期待測試方法方法名(上TestCase
子類)開始與test_
。
的unittest模塊描述測試跑步者爲:
甲測試運行是編排的測試 的執行並提供結果給用戶的部件。跑步者可以使用圖形界面,文本界面或返回一個特殊值來指示執行測試的結果。
有很多不同的測試框架,因此測試運行在那裏,大多數擴展以某種方式unittest
,尋找unittest.TestCase
子類。他們可能會做不同類型的test discovery,以不同的方式呈現結果,或在測試運行時收集code coverage。
至於相對進口:你應該儘量避免這些。它們會讓代碼難以移動(正如您剛剛注意到的那樣)並降低了導入的可讀性(從哪些代碼導入?)。只需使用from myproject.views import my_view
- 事情更加清晰
嘗試使用nose
http://nose.readthedocs.org/en/latest/
如果所有測試文件開始「測試」,nosetests
應接他們所有和運行它們。
我終於找到了辦法。我剛剛創建了名爲test的目錄,將其中的測試放入其中並創建了空文件__init__.py
。我需要修復的相對進口,或使其奇怪的錯誤,如:
AttributeError: 'module' object has no attribute 'tests'
我真的不明白是怎麼回事,什麼是nosetest
作用在這裏,但它的工作原理。
如果有人能夠更深入地解釋這個問題,那就太好了。
我在找到你發佈的AttributeError的修補程序時偶然發現了這個問題。對於搜索此問題的其他人,當我將所有相對導入更改爲絕對導入時(例如,從.models導入基本項目到projectname.models導入基本導入),問題得到解決。 –
我認爲金字塔已經使用nosetest –
太棒了,所以你甚至可能不需要安裝它。只要確保你的測試在一個文件夾中,他們的文件名以「test」開頭,然後進入該目錄並運行nosetests。 – Cody