6

当我尝试python manage.py test在我的 Django (1.4) 项目中运行时,出现错误:

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 错误中,并建议仅测试特定应用程序而不是全部。但是我的项目没有应用程序,models.py只是驻留在项目根目录中。要在 Django 中测试特定的应用程序,它看起来像这样

$ ./manage.py test animals
Note that we used animals, not myproject.animals.

这意味着无法指定要测试的根目录。我将如何测试我的项目目录?

请注意,此错误是有关单元测试发现的更大讨论的一部分。

4

2 回答 2

4

我会推荐使用django-discover-runner。它允许您指定和完整的虚线路径来测试。

如果您只运行 ./manage.py 测试,它将发现并运行 TEST_DISCOVER_ROOT 设置(文件系统路径)下的所有测试。如果您运行 ./manage.py test full.dotted.path.to.test_module,它将在该模块中运行测试(您也可以传递多个模块)。如果你给它一个指向包(如 Django 应用程序)的单个虚线路径,如 ./manage.py test myapp 并且该包本身不直接包含任何测试,它将在该包的所有子模块中进行测试发现。

于 2012-05-20T13:25:54.020 回答
1

创建一个名为 apps 的新目录,将整个应用程序移入其中减去 settings.py、manage.py、urls.py 以及 django-admin.py startproject 默认添加的任何其他内容,然后运行

./manage.py test apps

将来,请避免将整个应用程序保存在一个目录中。正是出于这个原因,根据功能将其分成子应用程序

于 2012-05-16T04:26:23.483 回答