我最近从Django 1.4升级到1.9,并意识到我的测试发生了一些奇怪的事情。这是项目结构:
project
manage.py
app/
__init__.py
tests/
__init__.py
test_MyTests.py
test_MyTests.py文件如下所示:
from django.test import TestCase
class MyTests(TestCase):
def test_math(self):
self.assertEqual(2, 2)
def test_math_again(self):
self.assertEqual(3, 3)
测试运行器可以在运行时找到所有测试
./manage.py test app
或./manage.py test app.tests
。但是,当我尝试运行./manage.py test app.tests.MyTests
时,我得到了:
File "/usr/lib/python2.7/unittest/loader.py", line 100, in loadTestsFromName
parent, obj = obj, getattr(obj, part)
AttributeError: 'module' object has no attribute 'MyTests'
如果我将测试类名称更改为test_MyTests,我可以运行./manage.py test app.tests.test_Mytests
,它将找到所有测试。我正在阅读Django文档但似乎文件名和类名不必相同。在上面展示的任何一种情况下,我仍然无法运行这样的单独测试./manage.py test app.tests.MyTests.test_math
我希望能够运行个别测试和测试课程,有人可以帮助我吗?感谢。
答案 0 :(得分:2)
在app.tests.test_MyTests
部分test_MyTests
中是模块名称,而不是类。要运行test_math
,您应指定此方法的完整路径:
python manage.py test app.tests.test_MyTests.MyTests.test_math
答案 1 :(得分:0)
Y遇到了同样的问题,我忘记删除django在创建应用时自动创建的默认文件 tests.py 。