Djangotesting运行器没有findtesting

我对Python和Django都是新手,我正在通过创build一个饮食pipe理网站来学习,但是我已经完全被unit testing运行所击败。 我发现的所有文档和博客都表示,只要它可以从tests.py中发现,tests.py就与models.py和TestCase TestCase的子类TestCase位于同一个文件夹中,它应该全部自动获取。 这不是我的工作,当我运行manage.py test <myapp>它没有find任何testing。

我在自己的软件包中开始了所有的testing,但是已经简化了所有testing,只是在我的tests.py文件中。 目前的tests.py如下所示:

 import unittest from pyDietTracker.models import Weight from pyDietTracker.weight.DisplayDataAdapters import DisplayWeight class TestDisplayWeight(unittest.TestCase): def setUp(self): pass def tearDown(self): pass def testGetWeightInStone_KG_Correctly_Converted(self): weight = Weight() weight.weight = 99.8 testAdapter = DisplayWeight(weight) self.assertEquals(testAdapter.GetWeightInStone(), '15 st 10 lb') 

我已经尝试了inheritanceDjango TestCase类,但是这也不起作用。 我正在使用Django 1.1.1,Python 2.6,我正在运行Snow Leopard。

我确定我错过了一些非常基本和显而易见的事情,但是我无法弄清楚什么。 有任何想法吗?

编辑:只是一个快速更新后的评论

 INSTALLED_APPS = ( 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.sites', 'django.contrib.admin', 'pyDietTracker', ) 

为了让testing运行,我正在运行manage.py test pyDietTracker

我有同样的问题,但我的问题是不同的。

我得到0testing作为OP。

但事实certificate,testing类中的testing方法必须以关键字'test'开始运行。

例:

 from django.test import TestCase class FooTest(TestCase): def setUp(self): pass def tearDown(self): pass def this_wont_run(self): print 'Fail' def test_this_will(self): print 'Win' 

如果您使用的是yourapp/testsyourapp/tests包/ style,请确保里面有一个__init__.py . yourapp/tests (因为那是什么使它成为一个python模块!)

解决了。

原来我做了django-admin.py startproject pyDietTracker但不是python manage.py startapp myApp 。 回去做这件事后,它确实按照logging工作。 看起来我有很多东西需要学习阅读和Django中的一个网站和一个应用程序之间的区别。

感谢您的帮助S.Lott和EmilStenström。 我希望我可以接受你的答案,因为他们都帮助很多。

最重要的课程testing只能在应用程序级别而不是网站级别上运行

如果您的tests.py中有语法错误,也会发生这种情况。

解决scheme对我来说很愚蠢,我inputdef而不是class

当我在同一个Django应用程序目录中有一个test.py文件和一个test /子目录时,我就发生了这种情况。 我想我是混乱的python或testing运行器是否我正在寻找一个testing模块(在test.py)或testing包(在testing/子目录)。

这是我刚才的另一个:检查你的testing文件是不可执行的。 我的virtualbox自动将它们挂载为可执行文件,以便testing发现完全忽略它们。 我不得不在相关的__init__.py文件中添加它们,然后才有人告诉我这是一个解决方法,但是现在它们被删除,并且不可执行,所有东西_just_works。

我可以运行testing特定的应用程序,例如

 python project/manage.py test app_name 

但是当我跑步

 python project/manage.py test 

发现0个testing

找出我需要运行在manage.py相同的目录中

所以解决办法是,cd到项目目录并运行

 python manage.py test 

如果您正尝试在您的主应用程序中运行testing,例如my_app / my_app /请确保您已经选中了以下内容:

  1. 应用程序名称在settings.py中的INSTALLED_APPS中列出
  2. 确保settings.py DATABASES['default']设置正确
  3. 该应用程序有一个models.py (即使你不使用一个,至less有一个空的是需要在那里)

请参阅http://docs.djangoproject.com/en/1.1/topics/testing/#id1

testing不运行的最常见原因是您的设置不正确,并且您的模块不在INSTALLED_APPS中。

我们使用django.test.TestCase而不是unittest.TestCase 。 它捆绑了Client

http://docs.djangoproject.com/en/1.1/topics/testing/#testcase

当您使用tests模块而不是tests.py时,也可能发生这种情况。 在这种情况下,您需要将所有testing类导入到您的testing模块的__init__.py中,例如

 tests/ __init__.py somemodule.py 

在你的__init__.py你现在需要像这样导入somemodule

 from .somemodule import *