2016-12-05 8 views
1

У меня есть приемочные испытания и единичные тесты unittest/django.test. У меня естьПочему тестовый бегун Django Behave говорит «игнорируя метку с точкой», когда я запускаю единичный тест?

TEST_RUNNER = 'django_behave.runner.DjangoBehaveTestSuiteRunner' 

в settings.py. У меня есть несколько файлов модульных тестов:

myapp/tests 
    __init.py__ # empty 
    tests_a.py 
    tests_b.py 

Я хочу запустить один файл модульных тестов. (Не одна особенность, я знаю, как сделать это.) Когда я

python manage.py test myapp.tests.tests_a 

я

Игнорирование этикетки с точкой в: myapp.tests.tests_a

, а затем tests_a.py работает. Большой! Только тесты, которые я хотел запустить, побежали. Но что говорит тестовый бегун об игнорировании? Я не нашел другого вызова, который запускает те тесты, которые я хочу, но не выдал предупреждение. Что тут происходит?

Django 1.10.2, django-behave 0.1.5.

ответ

1

django-behave позволяет прохождение названия приложений, как это:

python manage.py test app1 app2 

Когда вы сделаете это, то он загружает функции, которые принадлежат каждому приложению. Вы можете увидеть этот код в django_behave/runner.py. Ссылка, которую я здесь даю, указывает на последнюю версию , выпущенную на момент написания этого ответа,. В этом модуле вы найдете:

def build_suite(self, test_labels, extra_tests=None, **kwargs): 
    extra_tests = extra_tests or [] 
    # 
    # Add BDD tests to the extra_tests 
    # 

    # always get all features for given apps (for convenience) 
    for label in test_labels: 
     if '.' in label: 
      print("Ignoring label with dot in: %s" % label) 
      continue 
     app = get_app(label) 

     # Check to see if a separate 'features' module exists, 
     # parallel to the models module 
     features_dir = get_features(app) 
     if features_dir is not None: 
      # build a test suite for this directory 
      extra_tests.append(self.make_bdd_test_suite(features_dir)) 

    return super(DjangoBehaveTestSuiteRunner, self 
       ).build_suite(test_labels, extra_tests, **kwargs) 

Когда код работает в метку, которая имеет точку в ней, она предполагает, что это не имя приложения и просто пропускает его. Так что вы можете сделать:

python manage.py test app1 app2 some.module.name 

И some.module.name не заставит django-behave попытаться загрузить приложение с именем some.module.name и потерпеть неудачу.

Самая последняя версия кода, который еще не выпущен, больше не публикует уведомление об игнорировании этикеток.

 Смежные вопросы

  • Нет связанных вопросов^_^