我最近从 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
我希望能够运行单独的测试和测试类,有人可以帮我吗?谢谢。
请您参考如下方法:
在 app.tests.test_MyTests 部分 test_MyTests 是模块名称,而不是类。要运行 test_math,您应该指定此方法的完整路径:
python manage.py test app.tests.test_MyTests.MyTests.test_math
