Skip to main content
 首页 » 编程设计

python之Django Test Runner 找不到测试方法

2024年10月24日35mate10pro

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