2010-08-26 106 views
1

我使用django-nose來測試我們的Django項目。這是常見的分裂在Django這樣的應用程序內大型測試套件:如何防止鼻子運行並報告重複測試?

myapp/ 
    __init__.py 
    models.py 
    tests/ 
    __init__.py 
    test_views.py 
    test_models.py 
    views.py 

tests/__init__.py應該是這樣的:

from test_views import * 
from test_models import * 

由於Django會尋找測試中myapp.tests,一切正常。在另一方面鼻子會發現在tests_*.py__init__.py再次將其導入測試。這導致報告的測試總數是他們應該達到的兩倍。

解決此問題(比不使用的子模塊等),將正確地都Django的鼻子和默認的Django的測試運行報告任何測試的方法呢?

回答

1

解決此問題的任何方式(其他 比從不使用的子模塊)

不包括線

from test_views import * 
from test_models import * 

tests/__init__.py。這些線路完成了什麼?

+0

「Django會尋找在'myapp.tests'測試」 – Pete 2010-08-31 15:51:11

+0

真的嗎?如果省略,測試運行0次,如果包含,測試運行2次?這是奇怪的行爲。 我使用標準的鼻子(而不是Django鼻子),所以也許我的期望是錯誤的。然而,我的理解是鼻子的目的是自動找到測試,從而避免無關的代碼(例如不必要的進口)。 – Max 2010-08-31 17:46:35

+0

如果您想要使用Django測試發現或鼻子測試發現,這將是有問題的。 – spookylukey 2014-04-01 12:22:12

0

您可以有條件地進行導入。

以下的伎倆,假設你設置TEST_RUNNER = 'django_nose.NoseTestSuiteRunner'

from django.conf import settings 
if 'nose' not in getattr(settings, 'TEST_RUNNER', ''): 
    # Support Django test discovery 
    from .test_views import * 
    from .test_models import * 

這樣,你將能夠同時支持普通的Django測試發現和鼻試驗發現沒有重複試驗後,或者前者失去他們。

相關問題