Django测试运行器没有找到测试方法

时间:2016-01-28 13:31:03

标签: python django unit-testing testing

我最近从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

我希望能够运行个别测试和测试课程,有人可以帮助我吗?感谢。

2 个答案:

答案 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

相关问题