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/tests
的yourapp/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 /请确保您已经选中了以下内容:
- 应用程序名称在
settings.py
中的INSTALLED_APPS中列出 - 确保
settings.py
DATABASES['default']
设置正确 - 该应用程序有一个
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 *