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-nose 和默认 Django 测试运行器的测试?

4

2 回答 2

1

解决这个问题的任何方法(除了从不使用子模块)

不包括行

from test_views import *
from test_models import *

tests/__init__.py. 这些线在做什么?

于 2010-08-31T13:49:49.063 回答
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 测试发现和鼻子测试发现,而无需为后者重复测试,或者为前者丢失它们。

于 2014-04-01T12:39:29.477 回答