0

运行任何这些代码时,Django 1.6.10 找不到位于我的应用程序之外的测试模块(参考: https ://docs.djangoproject.com/en/1.6/topics/testing/overview/#running-tests )

./manage.py test tests/app1/
./manage.py test tests/app1/test_views

我不断收到这些错误

django.core.exceptions.ImproperlyConfigured: App with label tests/app1/ could not be found

django.core.exceptions.ImproperlyConfigured: App with label tests/app1/test_views could not be found

这是我的项目结构:

- project
    - app1
        - __init__.py
        - models.py
        - views.py
        - forms.py
        - admins.py
    - app2
        - ..as per above
    - tests
        - __init__.py (blank)
        - app1
           - __init__.py (blank)
           - test_views.py
           - test_forms.py
        - app2
           - __init__.py (blank)
           - test_views.py
           - test_walkthrough.py    

我读了几次 Django Discovery runner,但仍然无法找出我哪里出错了。请提供任何帮助-我想念什么

替换 / 与 . 但是在执行时给出相同的错误

./manage.py test tests.app1.test_views.MyTestCase
./manage.py test tests.app1.test_views.MyTestCase.test_mymethod   

我得到值错误。

ValueError: Test label  'tests.app1.test_views.MyTestCase.test_mymethod' should be of the form app.TestCase or app.TestCase.test_method

进一步更新:当我将 --testrunner='django.test.runner.DiscoverRunner' 添加到命令行时,我终于让它工作了。根据 Django 文档,这些模式中的任何一个现在都可以工作(使用 / 是提供目录路径以发现该目录下的测试的一种方式):。

./manage.py test --testrunner='django.test.runner.DiscoverRunner' tests.app1
./manage.py test --testrunner='django.test.runner.DiscoverRunner' tests.app1.test_views.MyTestCase
./manage.py test --testrunner='django.test.runner.DiscoverRunner' tests/app1/

仍然不知道为什么我必须提供 --testrunner 值。我也在我的代码中使用 Mezzanine 并双重确认 settings.TEST_RUNNER 指向 django.test.runner.DiscoverRunner

谁能帮助解释为什么我在 django 1.6 中需要 --testrunner 标志?先感谢您。

4

1 回答 1

3

您应该将它们称为模块,而不是路径:

./manage.py test tests.app1
./manage.py test tests.app1.test_views

在文档中阅读更多关于运行测试的信息。

于 2015-03-16T12:08:38.007 回答