我遇到的问题是django测试运行器没有找到我的应用程序的测试,就像这个:
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,所以我在(激活的)virtualenv中运行了“django-admin.py startapp”,我想让测试运行。这不会使测试在我的其他虚拟现实中运行,我仍然有旧的症状(Ran 0测试)。我有很多virtualenvs,由非平凡的摊铺机脚本管理。一个使用“path.copytree”来部署项目,重写apache配置文件,重新启动apache,使用适当的virtualenv写wsgi文件等。另一个使用PIP / GCC / aptitude / etc来引导/拆除不同的环境,更新包因此我希望了解django-startapp与简单复制文件之间的区别,因此我可以修复这些paver脚本,以便测试可以在我想要的任何环境中运行。
答案 0 :(得分:0)
在阅读完您的描述后,唯一有意义的是您现有应用的路径位置。你能否确认以下事项:
__init__.py
文件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
来做它的发现事情
答案 1 :(得分:0)
解决了(仍然带着一点魔力)。
diff
显示我的旧应用没有models.py,但是新应用(“delme”,工作)确实如此。我不认为旧的应用程序需要一个,它是从其他地方导入所有它的域类。
在我的旧应用中触摸空models.py
修复它,现在测试运行器找到tests.py
,一切都按预期工作。 Condlusion - 如果应用程序没有models.py,django测试运行器将找不到应用程序的tests.py。
我所说的不使用不同的virtualenvs是假的(红鲱鱼),我对我的部署脚本正在做的事情感到有点困惑。