Django 1.6测试发现找不到测试模块

时间:2015-03-16 12:04:38

标签: django django-testing django-tests

运行任何这些代码时,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的跑步者,但仍然无法找出我哪里出错了。请帮忙 - 我错过了什么

更换/用。但是在执行时会出现相同的错误

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

我得到了ValueError。

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 doc,现在任何这些模式都可以工作(使用/是一种提供目录路径的方法来发现该目录下的测试):.

./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标志?提前谢谢。

1 个答案:

答案 0 :(得分:3)

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

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

详细了解如何运行测试in the docs