2012-04-11 43 views
2

我有一个问题,那就是django测试跑步者没有找到我的应用的测试,像这样:“django-admin startapp”在做什么,测试跑步者需要找到我的tests.py

Django test runner not finding tests

一个在该线程的意见建议与django-admin.py创建一个新的应用程序,看是否测试跑过来。例如

django-admin.py startapp delme 

然后

adding "delme" to my INSTALLED_APPS 

然后

copying my tests.py from the app where it wasn't getting found into delme/ 

和中提琴!测试确实运行。所以,好吧,我有一个工作,但我不明白。我重新阅读我认为应该是django文档的相关部分,但是便士拒绝放弃。

顺便说一下,该应用程序通过runserver和wsgi工作,所以似乎没有任何总体配置问题。我的测试全部通过他们的新家,所以我显然需要更多的测试:)

具体来说,我在virtualenv中运行django,所以我在(激活的)应用程序中运行了“django-admin.py startapp” virtualenv我想要测试运行。这不会使测试运行在我的其他virtualenvs,我仍然有旧的症状(Ran 0测试)。我有许多virtualenvs,由非平凡的摊铺机脚本管理。一个使用“path.copytree”来部署项目,重写apache配置文件,重新启动apache,使用适当的virtualenv写入wsgi文件等。另一个使用PIP/GCC/aptitude/etc来引导/拆除不同的环境,更新软件包根据配置等等。所以我想了解django-startapp和简单复制文件之间的区别,所以我可以修复这些摊铺机脚本,以便测试可以在任何我希望它们运行的​​环境中运行。

回答

0

在阅读完描述之后,唯一对我有意义的是现有应用程序路径的位置。你能否确认以下事项:

  1. 你的应用程序是在同一文件夹级别作为代尔姆应用
  2. 您的应用程序文件夹中包含一个__init__.py文件
  3. 您的应用列在INSTALLED_APPS设置

我猜测这是一个丢失的__init__.py文件,因为这会让某些人出门。为了回答你的具体问题,django-admin startapp不会做任何神奇的事情。它只是在正确的位置创建正确的文件夹和文件。

你的文件夹结构应该是...

my_project/ 
    __init__.py 
    manage.py 
    settings.py 
    my_app/ 
     __init__.py 
     tests.py 
     models.py 
    delme/ 
     __init__.py 
     tests.py 
     models.py 

还要注意this comment

你不能简单直接命名的TestCase类。你的名字应用程序,Django亚军是否通过在models.py和tests.py中寻找发现的东西

+0

是所有3个计数。我的非测试应用程序与新的“delme”应用程序相邻,它具有(空的)__init __。py',并且它在INSTALLED_APPS中列出。当从delme /运行时,我的测试命中了非测试应用程序(并通过)。 – 2012-04-11 07:49:35

+0

另外,如果我使用'manage.py test --settings = mysettings'对整个项目运行测试,或者仅在具有'manage.py test delme --settings = mysettings'的应用程序上运行测试,则没有任何区别。 (作品),'manage.py测试非测试--settings = mysettings'(不起作用)。 – 2012-04-11 07:57:21

+0

如果你说的是真的,并且django-admin没有魔法(只创建文件/目录),那么我必须修改我的路径或者像这样奇怪的东西。当一天开始时,我会明天检查一下。 – 2012-04-11 11:39:22

0

解决了(仍然带着一丝魔力)。

diff表明我的旧应用程序没有models.py,但新应用程序(“delme”,工作)没有。我不认为旧的应用程序需要一个,它是从其他地方导入所有它的域类。

在我的旧应用程序中触摸一个空的models.py已修复它,现在测试运行器发现tests.py,并且所有内容都按预期工作。 Condlusion - 如果应用程序没有models.py,则django测试运行器将无法找到该应用程序的tests.py。我说的不是用不同的virtualenvs工作是假的(红鲱鱼),我对我的部署脚本正在做什么感到困惑。

相关问题