当我尝试在我的Django(1.4)项目中运行python manage.py test
时,我收到错误:
ERROR: test_site_profile_not_available (django.contrib.auth.tests.models.ProfileTestCase)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/home/slacy/src/tmp/env/local/lib/python2.7/site-packages/django/contrib/auth/tests/models.py", line 29, in test_site_profile_not_available
del settings.AUTH_PROFILE_MODULE
File "/home/slacy/src/tmp/env/local/lib/python2.7/site-packages/django/utils/functional.py", line 215, in __delattr__
delattr(self._wrapped, name)
AttributeError: AUTH_PROFILE_MODULE
这是Django错误中的documented,建议只测试特定应用而不是全部。但是我的项目没有应用程序,models.py
只是驻留在项目根目录中。要在Django中测试特定的应用,它看起来像this:
$ ./manage.py test animals
Note that we used animals, not myproject.animals.
意味着无法指定要测试的根目录。我如何测试我的项目目录?
请注意,此错误是larger discussion on unit testing discovery的一部分。
答案 0 :(得分:3)
我建议使用django-discover-runner。它允许您指定和完整的虚线路径进行测试。
如果您只运行./manage.py测试,它将发现并运行TEST_DISCOVER_ROOT设置(文件系统路径)下的所有测试。如果你运行./manage.py test full.dotted.path.to.test_module,它将运行该模块中的测试(你也可以传递多个模块)。如果你给它一个单独的虚线路径到一个包(比如Django应用程序),比如./manage.py test myapp,那个包本身不直接包含任何测试,它将在该包的所有子模块中进行测试发现。 / p>
答案 1 :(得分:0)
创建一个名为apps的新目录,将整个应用程序移到其中减去settings.py,manage.py,urls.py以及django-admin.py startproject默认添加的任何其他内容,然后运行
./manage.py test apps
将来,请避免将整个应用程序保存在一个目录中。出于这个原因,将其分离为基于功能的子应用程序