为什么 Django Behave 测试 运行ner 在我 运行 单个单元测试时说 "ignoring label with dot"?

Why does the Django Behave test runner say "ignoring label with dot" when I run a single unit test?

我有 Behave 验收测试和 unittest/django.test 单元测试。我有

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

我明白了

Ignoring label with dot in: myapp.tests.tests_a

然后是 tests_a.py 运行。伟大的!只有我想要的测试 运行 运行。但是测试 运行ner 所说的忽略是什么?我还没有找到 运行 是我想要的测试但没有发出警告的另一个调用。这是怎么回事?

Django 1.10.2,django-behave 0.1.5。

django-behave 允许像这样传递应用名称:

python manage.py test app1 app2

执行此操作时,它会加载属于每个应用程序的功能。您可以在 django_behave/runner.py 中看到该代码。我在这里给出的 link 指向撰写此答案时最新的 已发布 版本。在该模块中,您会发现:

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 的应用程序并失败。

最新版本的代码,尚未发布,不再发布有关忽略标签的通知。