Django 1.6+测试不发现位于测试子目录中的单元测试

时间:2014-07-16 15:01:46

标签: python django unit-testing

所以我查看了与Django相关的不少10个不同的Stack Overflow问题,但没有找到单元测试,其中每个人仍然无法解决我的问题。

我正在运行Django 1.65并试图让Django发现我的测试。

这是我的目录结构

project
  __init__.py
  my_app
    __init__.py
    tests
      __init__.py
      test_template_tags.py
  my_app2
    __init__.py
    tests
      __init__.py
      test_something_else.py  

我在项目目录中的命令行尝试的命令是: python manage.py test my_app

test_template_tags.py中的代码是:

from django.test import TestCase

class MyTestClass(TestCase):

  def setUp(self):
      pass

  def tearDown(self):
      pass

  def test_something(self):
      self.assertTrue(True)

从另一个SO的提示开始执行此命令find my_app -name 'test*.py'并显示所有测试文件。

当我打开项目目录中的django shell并尝试导入测试类时,一切都按预期工作。

from my_app.tests.test_template_tags import MyTestClass

最后,我将测试代码复制并粘贴到app目录中的tests.py文件中,当然,它有效,但它不是我想要的解决方案。

我在这里还有其他一些明显的小事吗?我的所有__init__.py文件都已按顺序排列,所有测试文件前面都有test_,my_app包含在INSTALLED_APPLICATIONS设置中。

2 个答案:

答案 0 :(得分:2)

__init__.py中,您需要import该目录中的其他测试模块,以便测试运行器发现它们。如果您的结构如下所示:

project
  __init__.py
  my_app
    __init__.py
    tests
      __init__.py
      test_template_tags.py
  my_app2
    __init__.py
    tests
      __init__.py
      test_something_else.py  

然后my_app.tests.__init__.py将包含:

from test_template_tags import *

my_app2.tests.__init__.py将包含:

from test_something_else import *

然后您的测试将使用python manage.py test

运行

答案 1 :(得分:0)

在尝试此处的任何答案之前,请确保按照惯例将测试文件标记为cd ~/MyPythonScripts