Как предотвратить запуск Nose и создание отчетов о дублирующих тестах? - PullRequest
1 голос
/ 27 августа 2010

Я использую 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 ]

1 голос
/ 31 августа 2010

Любые способы решения этой проблемы (кроме случаев использования субмодулей)

Не включайте строки

from test_views import *
from test_models import *

в tests/__init__.py.Чего добиваются эти строки?

0 голосов
/ 01 апреля 2014

Вы можете сделать импорт условно.

Следующее делает трюк, предполагая, что вы устанавливаете 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 *

Таким образом вы сможете поддерживать обаобычное обнаружение теста Джанго и обнаружение носового теста без дублирования тестов для последнего или потери их для первого.

...