如何防止Nose运行并报告重复测试?

时间:2010-08-26 20:30:58

标签: python django nose

我正在使用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中寻找测试,所以一切都按预期工作。另一方面,Nose会在tests_*.py 中找到测试,会在__init__.py中再次导入测试。这导致报告的测试总数达到应有的两倍。

任何解决这个问题的方法(除了从不使用子模块)都能正确地用django-nose和默认的Django测试运行器报告测试?

2 个答案:

答案 0 :(得分:1)

  

解决这个问题的方法(其他   从不使用子模块)

不要包含

from test_views import *
from test_models import *
tests/__init__.py中的

。那些线路完成了什么?

答案 1 :(得分: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测试发现和鼻子测试发现,而无需为后者重复测试,或者为前者丢失它们。