我正在使用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测试运行器报告测试?
答案 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测试发现和鼻子测试发现,而无需为后者重复测试,或者为前者丢失它们。