Django 1.6+ 测试未发现位于 tests 子目录中的单元测试
我看了不少于10个关于Django找不到单元测试的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)
根据另一个问题的提示,我执行了这个命令 find my_app -name 'test*.py'
,结果显示所有测试文件都如预期那样列出来了。
当我在项目目录下打开Django的命令行,尝试导入测试类时,一切都正常。
from my_app.tests.test_template_tags import MyTestClass
最后,我把测试代码复制粘贴到应用目录下的tests.py文件里,当然,这样是可以工作的,但这不是我想要的解决方案。
我是不是漏掉了什么明显的小细节?我的所有__init__.py
文件都在正确的位置,所有测试文件的前面都有test_
,而且my_app也在设置中的INSTALLED_APPLICATIONS
里。
2 个回答
1
在你的 __init__.py
文件里,你需要把同一目录下的其他测试模块导入,这样测试运行器才能找到它们。如果你的文件结构是这样的:
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
来运行你的测试了。
3
在尝试这里的任何答案之前,确保你的测试文件按照约定命名为 test*.py
。