2015-11-18 116 views
-1

我使用的是Django的鼻子可疑的差距(和Django的鼻子),我得到一個非常奇怪的覆蓋率報告:在鼻子覆蓋

$ python3 manage.py test lists 
nosetests lists --with-coverage --cover-package=lists,superlists --verbosity=1 
Creating test database for alias 'default'... 
............ 
Name           Stmts Miss Cover Missing 
--------------------------------------------------------------------------- 
lists.py           0  0 100% 
lists\admin.py         0  0 100% 
lists\migrations\0001_initial.py     5  0 100% 
lists\migrations\0002_item_text.py    5  0 100% 
lists\migrations\0003_list.py      5  0 100% 
lists\migrations\0004_item_list.py    5  0 100% 
lists\migrations\0005_auto_20151117_1835.py  5  0 100% 
lists\migrations.py        0  0 100% 
lists\models.py         6  6  0% 1-12 
lists\urls.py          3  0 100% 
lists\views.py         23  0 100% 
superlists.py          0  0 100% 
superlists\settings.py       19  19  0% 14-113 
superlists\urls.py        5  0 100% 
--------------------------------------------------------------------------- 
TOTAL           81  25 69% 
---------------------------------------------------------------------- 
Ran 12 tests in 0.073s 

我的設置都配置:

TEST_RUNNER = 'django_nose.NoseTestSuiteRunner' 

NOSE_ARGS = [ 
    '--with-coverage', 
    '--cover-package=lists,superlists', 
] 

而作爲它管理應用的參數,並期待在我的listssuperlists(我做的Python書TDD)顯然那些讀應用程式就好了。出於某種原因,然而,它說,它並不包括任何的settings.py文件或我的lists/models.py的;很簡單的類,只是有一些字段定義,沒有函數,沒有方法。如果是「根級」類是一個模塊中並且被導入,其所有的類屬性和方法簽名(def x(...):線)被執行時,成功,否則便立即崩潰。

設置文件必須被執行,否則Django甚至不會運行。爲什麼覆蓋率報告和模型錯過?

回答

0

最可能的答案是Django的鼻子大火覆蓋設置文件導入(因爲manage.py test命令本身運行測試之前運行Django的設置代碼)。因此,在此設置過程中評估的任何代碼未包含在覆蓋率結果中。

你可能希望有一個相關的問題一看this answer了更詳細的解釋。希望這可以幫助!